2. 使用 Python 解释器

2.1. 调用解释器

Python 解释器一般安装在 /usr/local/bin/python3.9 路径下;将 /usr/local/bin 加入 Unix 终端的搜索路径,键入以下命令就可以启动 Python:

python3.9

这样,就可以在 shell 中运行 Python 了 1 。因为可以选择安装目录,解释器也有可能安装在别的位置;如果还不明白,就去问问身边的 Python 大神或系统管理员。(例如,常用的备选路径还有 /usr/local/python。)

Windows 系统中,从 Microsoft Store 安装 Python 后,就可以使用 python3.9 命令了。 如果安装了 py.exe 启动器,则可以使用 py 命令。 请参阅 附录:设置环境变量,了解启动 Python 的其他方式。

在主提示符中,输入文件结束符(Unix 里是 Control-D,Windows 里是 Control-Z),将退出解释器,退出状态码为 0。如果不能退出,还可以输入这个命令:quit()

在支持 GNU Readline 库的系统中,解释器的行编辑功能包括交互式编辑、历史替换、代码补全等。检测是否支持命令行编辑最快速的方式是,在首次出现 Python 提示符时,输入 Control-P。听到“哔”提示音,说明支持行编辑;请参阅附录 交互式编辑和编辑历史,了解功能键的介绍。 如果没有反应,或回显了 ^P,说明不支持行编辑;只能用退格键删除当前行的字符。

解释器的操作方式类似 Unix Shell:以 tty 设备关联的标准输入调用时,它能交互式地读取和执行命令;以文件名参数、或标准输入文件调用时,则读取,并执行文件中的 脚本

启动解释器的另一种方式是 python -c command [arg] ...,这与 shell 的 -c 选项类似,其中,command 需换成要执行的语句。由于 Python 语句经常包含空格等被 shell 特殊对待的字符,一般情况下,建议用单引号把整个 command 括起来。

Python 模块也可以当作脚本使用。输入:python -m module [arg] ...,会执行 module 的源文件,就跟在命令行把路径写全了一样。

在交互模式下运行脚本文件,只要在脚本名称参数前,加上选项 -i 就可以了。

命令行的所有选项详见 命令行与环境

2.1.1. 传入参数

如果可能的话,解释器会读取命令行参数,转化为字符串列表存入 sys 模块中的 argv 变量中。执行命令 import sys 你可以导入这个模块并访问这个列表。这个列表最少也会有一个元素;如果没有给定输入参数,sys.argv[0] 就是个空字符串。如果给定的脚本名是 '-' (表示标准输入),sys.argv[0] 就是 '-'。使用 -c command 时,sys.argv[0] 就会是 '-c'。如果使用选项 -m modulesys.argv[0] 就是包含目录的模块全名。在 -c command-m module 之后的选项不会被解释器处理,而会直接留在 sys.argv 中给命令或模块来处理。

2.1.2. 交互模式

在终端(tty)输入并执行指令时,我们说解释器是运行在 交互模式(interactive mode)。在这种模式中,它会显示 主提示符(primary prompt),提示输入下一条指令,通常用三个大于号(>>>)表示;连续输入行的时候,它会显示 次要提示符,默认是三个点(...)。进入解释器时,它会先显示欢迎信息、版本信息、版权声明,然后就会出现提示符:

$ python3.9
Python 3.9 (default, June 4 2019, 09:25:04)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

多行指令需要在连续的多行中输入。比如,以 if 为例:

>>> the_world_is_flat = True
>>> if the_world_is_flat:
...     print("Be careful not to fall off!")
...
Be careful not to fall off!

有关交互模式的更多内容,请参考 交互模式

2.2. 解释器的运行环境

2.2.1. 源文件的字符编码

默认情况下,Python 源码文件以 UTF-8 编码方式处理。在这种编码方式中,世界上大多数语言的字符都可以同时用于字符串字面值、变量或函数名称以及注释中——尽管标准库中只用常规的 ASCII 字符作为变量或函数名,而且任何可移植的代码都应该遵守此约定。要正确显示这些字符,你的编辑器必须能识别 UTF-8 编码,而且必须使用能支持打开的文件中所有字符的字体。

如果不使用默认编码,要声明文件所使用的编码,文件的 第一 行要写成特殊的注释。语法如下所示:

# -*- coding: encoding -*-

其中 encoding 可以是 Python 支持的任意一种 codecs

比如,要声明使用 Windows-1252 编码,源码文件要写成:

# -*- coding: cp1252 -*-

关于 第一行 规则的一种例外情况是,源码以 UNIX "shebang" 行 开头。这种情况下,编码声明就要写在文件的第二行。例如:

#!/usr/bin/env python3
# -*- coding: cp1252 -*-

脚注

1

Unix 系统中,Python 3.x 解释器默认安装的执行文件不叫 python,这样才不会与同时安装的 Python 2.x 冲突。