Python 解释器
参考资料:
python std lib -> https://docs.python.org/3/library/index.html
python tutorial -> https://docs.python.org/3/tutorial/index.html
命令行参数
-c command
-c 参数允许我们向解释器传递一个字符串作为 python 脚本, 例如:
python -c '
import sys
print(sys.argv) # ['-c']
print(sys.path) # ['', ...]
'
sys.path
是一个字符串列表,用于指定模块的搜索路径,初始化自环境变量 PYTHONPATH
。
当使用 -c
执行 python 代码时,一个空串将被添加到列表首位,这意味着 python 解释器会优先查找当前目录下的模块。
-m module-name
在 sys.path
中搜索一个 python 模块 (参数不带后缀 .py) 并执行。
sys.path
是一个列表,存储系统环境变量 PATH,此外,当前目录将添加到该列表首位。
-O
以优化模式执行 python 解释器,这将会移除断言,并移除 __debug__
常量。
编写命令行工具
使用 sys.argv
来接收命令行参数,他是一个长度至少为一的数组,当没有任何参数时,sys.argv[0]
为空串。
- 使用
python -c '<code string>' ...opts
执行脚本时,脚本中接收到的第一个参数将是 ‘-c’,其后的所有参数将传递给脚本执行环境,而不是 python 解释器。 - 使用
python <filename>
执行脚本时,<filename>
将作为第一个参数。 - 对于
python -m <modulename>
执行脚本的情况,第一个参数将是该 module 的完整路径,因为他是自sys.path
中搜索而来。
当脚本名为
-
时(即执行python -
),-
似乎被认为是指代标注你输入的符号,于是就进入了 python 解释器的交互程序,且sys.args[0]
为"-"
。
环境变量
PYTHONPATH
初始化 sys.path
,python 解释器寻找模块的依据。
PYTHONSTARTUP
一个脚本文件名,在交互环境中被首先执行。
PYTHONOPTIMIZE
存在该环境变量时启动 python 解释器,相当于默认带有 -O 参数。
编码
Python 解释器默认使用 UTF-8 编码,但我们也可以在脚本头部声明文件使用的编码
# -*- coding: GBK -*-
...