2. 使用 Python 解释器

2.1. 调用解释器

Python 解释器通常安装在那些可用的机器上的 /usr/local/bin/python3.13 中;将 /usr/local/bin 放入你的 Unix shell 的搜索路径中,就可以通过输入以下命令来启动它

python3.13

到 shell。[1] 由于解释器所在的目录的选择是一个安装选项,因此可能存在其他位置;请咨询你当地的 Python 专家或系统管理员。(例如,/usr/local/python 是一个常见的替代位置。)

在您从 Microsoft Store 安装了 Python 的 Windows 机器上,可以使用 python3.13 命令。如果您安装了 py.exe 启动器,则可以使用 py 命令。有关启动 Python 的其他方法,请参见 附录:设置环境变量

在主提示符处键入文件结束符(Unix 上为 Control-D,Windows 上为 Control-Z)会导致解释器以零退出状态退出。如果这不起作用,您可以通过键入以下命令退出解释器:quit()

解释器的行编辑功能包括交互式编辑、历史记录替换以及对支持 GNU Readline 库的系统上的代码完成。要查看是否支持命令行编辑,最快的方法是在您获得的第一个 Python 提示符下键入 Control-P。如果它发出哔哔声,则您具有命令行编辑功能;有关按键的介绍,请参阅附录 交互式输入编辑和历史记录替换。如果没有任何反应,或者回显了 ^P,则表示命令行编辑不可用;您只能使用退格键从当前行中删除字符。

解释器的操作有点像 Unix shell:当使用连接到 tty 设备的标准输入调用时,它会交互式地读取和执行命令;当使用文件名参数或将文件作为标准输入调用时,它会从该文件中读取和执行脚本

启动解释器的第二种方法是 python -c command [arg] ...,它执行 command 中的语句,类似于 shell 的 -c 选项。由于 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 module 时,sys.argv[0] 设置为已定位模块的完整名称。在 -c command-m module 之后找到的选项不会被 Python 解释器的选项处理所消耗,而是保留在 sys.argv 中供命令或模块处理。

2.1.2. 交互模式

当从 tty 读取命令时,解释器被称为处于交互模式。在这种模式下,它会使用主提示符(通常是三个大于号 (>>>))提示输入下一个命令;对于续行,它会使用辅助提示符(默认为三个点 (...))进行提示。解释器在打印第一个提示符之前,会打印一条欢迎消息,其中声明其版本号和版权声明

$ python3.13
Python 3.13 (default, April 4 2023, 09:25:04)
[GCC 10.2.0] 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 -*-

脚注