一、sys 模块是什么?

简单说,sys模块是 Python 自带的 “解释器小助手”,专门负责和 Python 解释器打交道,比如:

  • 获取命令行参数(你运行程序时输入的额外信息)
  • 控制程序退出
  • 查看解释器版本、默认编码等信息

和os模块的区别

  • os → 管操作系统(文件、文件夹操作)
  • sys → 管 Python 解释器(运行环境、参数、退出等)

二、最常用的功能:按场景记

1. 命令行参数:获取运行程序时的 “额外输入”

sys.argv可以拿到你运行 Python 脚本时传入的参数,比如 python test.py 123 abc中的123abc

变量 作用 示例 输出
sys.argv 返回命令行参数列表(第一个元素是脚本名) 脚本test.py内容:
import sys
print(sys.argv)
运行命令:python test.py 123 abc
[‘test.py’, ‘123’, ‘abc’]

2. 退出程序:让程序 “提前下班”

sys.exit()可以让程序在中途退出,后面的代码不再执行。

import sys

print("程序开始")
sys.exit()  # 退出程序
print("这里不会执行")  # 不会打印

3. 标准输入输出:和用户 “对话” 的底层方式

sys.stdin(输入)、sys.stdout(输出)、sys.stderr(错误输出)是 Python 和用户交互的底层接口,我们常用的input()和print()其实是它们的 “简化版”。

对象 作用 等价简化方式 示例
sys.stdout 标准输出(打印内容) print() sys.stdout.write(“Hello\n”) → 等价print(“Hello”)
sys.stdin 标准输入(获取用户输入) input() s = sys.stdin.readline() → 等价s = input()
sys.stderr 错误输出(专门打印错误信息) - sys.stderr.write(“出错啦!”) → 打印错误提示

4. 解释器信息:查看 Python 的 “身份信息”

想知道当前用的 Python 版本、运行在什么系统上?这些都能通过 sys 模块获取。

变量 / 函数 作用 示例输出
sys.version Python 版本信息 3.7.9 (tags/v3.7.9:13c94747c7, Aug 17 2020, 16:30:00) [MSC v.1900 64 bit (AMD64)]
sys.platform 操作系统平台 win32(Windows)、linux(Linux)、darwin(Mac)
sys.executable Python 解释器的安装路径 C:\Python39\python.exe
sys.copyright Python 版权信息 Copyright © 2001-2021 Python Software Foundation

5. 其他实用功能

函数 作用 示例 输出
sys.getsizeof(对象) 查看对象占用的字节数 sys.getsizeof(“abc”) 52(字符串 “abc” 占 52 字节)
sys.getrecursionlimit() 查看 Python 默认递归深度(避免递归卡死) sys.getrecursionlimit() 1000(默认最多递归 1000 层)
sys.getdefaultencoding() 查看默认字符串编码 sys.getdefaultencoding() ‘utf-8’(默认用 utf-8 编码)

三、实战小例子

例子 1:用命令行参数做简单计算器

import sys

# 运行命令:python calc.py 10 + 20
if len(sys.argv) != 4:
    print("用法:python calc.py 数字1 运算符 数字2")
    sys.exit()  # 参数不对就退出

num1 = float(sys.argv[1])
op = sys.argv[2]
num2 = float(sys.argv[3])

if op == "+":
    print(num1 + num2)
elif op == "-":
    print(num1 - num2)
else:
    print("只支持+和-")

例子 2:限制递归深度(避免程序卡死)

import sys

# 查看默认递归深度
print("默认递归深度:", sys.getrecursionlimit())  # 输出1000

# 临时修改递归深度为2000
sys.setrecursionlimit(2000)
print("修改后递归深度:", sys.getrecursionlimit())  # 输出2000

四、总结

sys 模块的核心是 “和 Python 解释器交互”,记住这几个高频功能就够日常用了:

  • sys.argv:拿命令行参数
  • sys.exit():退出程序
  • sys.version:查 Python 版本
  • sys.stdin/sys.stdout:底层输入输出

遇到不懂的函数,用print(dir(sys))查看所有功能,再搜具体用法就行~

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐