Skip to main content

2. 使用Python解释器

2.1. 调用翻译

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

python3.6

到壳。 [1] 由于解释器所在的目录的选择是安装选项,其他地方是可能的;请与您的本地Python管理员或系统管理员联系。 (例如,/usr/local/python 是受欢迎的替代位置。)

在Windows机器上,Python安装通常放在 C:\Python36 中,虽然您可以在运行安装程序时更改此设置。要将此目录添加到您的路径,您可以在DOS框中的命令提示符下键入以下命令:

set path=%path%;C:\python36

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

解释器的行编辑功能包括在支持readline的系统上的交互式编辑,历史替换和代码完成。也许最快的检查是否支持命令行编辑是打开 Control-P 到您获得的第一个Python提示。如果它发出哔声,你有命令行编辑;有关键的介绍,请参见附录 交互式输入编辑和历史替换。如果没有发生任何事情,或者如果 ^P 回显,命令行编辑不可用;您只能使用退格键从当前行中删除字符。

解释器的工作方式与Unix shell类似:当使用标准输入连接到tty设备时,它会以交互方式读取和执行命令;当用文件名参数或文件作为标准输入调用时,它从该文件读取并执行 script

启动解释器的第二种方法是 python -c command [arg] ...,它执行 command 中的语句,类似于shell的 -c 选项。因为Python语句通常包含空格或其他对shell特殊的字符,所以通常建议用单引号引用 command 的整体。

一些Python模块也可用作脚本。这些可以使用 python -m module [arg] ... 来调用,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.6
Python 3.6 (default, Sep 16 2015, 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,而不是UTF-8。可能的编码列表可以在Python Library Reference中的 codecs 部分找到。

例如,如果您选择的编辑器不支持UTF-8编码文件,并坚持使用其他编码,例如Windows-1252,您可以编写:

# -*- coding: cp-1252 -*-

并仍然使用源文件中的Windows-1252字符集中的所有字符。特殊编码注释必须在文件中的 第一或第二 行中。

脚注

[1]

在Unix上,Python 3.x解释器默认情况下不安装可执行文件 python,因此它不会与同时安装的Python 2.x可执行文件冲突。