Python sys 模块:和 Python 解释器 “对话” 的小工具
·
一、sys 模块是什么?
简单说,sys模块是 Python 自带的 “解释器小助手”,专门负责和 Python 解释器打交道,比如:
- 获取命令行参数(你运行程序时输入的额外信息)
- 控制程序退出
- 查看解释器版本、默认编码等信息
和os模块的区别:
- os → 管操作系统(文件、文件夹操作)
- sys → 管 Python 解释器(运行环境、参数、退出等)
二、最常用的功能:按场景记
1. 命令行参数:获取运行程序时的 “额外输入”
用sys.argv可以拿到你运行 Python 脚本时传入的参数,比如 python test.py 123 abc中的123和abc。
| 变量 | 作用 | 示例 | 输出 |
|---|---|---|---|
| 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))查看所有功能,再搜具体用法就行~
更多推荐


所有评论(0)