2. 使用Python 解释器

2.1. 调用解释器

在可以使用Python的系统中,解释器通常位于/usr/local/bin/python3.5;在Unix shell中设置路径 /usr/local/bin ,之后可以通过键入命令:

python3.5

python3.5[1]由于解释器安装的目录是一个安装可选项,其它的路径也是可行的。请与您本地的Python专家或系统管理员联系。(一般 /usr/local/python 为最常见的安装位置。)

在 Windows中,Python 通常安装在 C:\Python35,在运行安装程序时,您可以更改安装路径。你可以在DOS窗口的命令提示符下键入以下命令来把这个目录添加到path中:

set path=%path%;C:\python35

主提示符下键入文件结束字符 (Unix下为Control-D,Windows下为 Control- Z) 可以让解释器以零退出状态退出。如果无效,您也可以通过键入以下命令退出解释器︰ quit()

解释器的行编辑功能通常不是很复杂。在Unix上,不管是谁安装的,解释器可能已启用对GNU readline库的支持,该库添加了更详细的交互式编辑和历史记录功能。检查是否支持命令行编辑的最快的方式也许是对你的第一个Python提示符键入Control-P如果它发出蜂鸣声,则有命令行编辑;请参阅附录交互式输入编辑和历史替换 的有关快捷键的介绍。如果什么都没发生,或者显示^ P,则命令行编辑不可用;你就只能够使用退格键删除当前行中的字符。1

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

第二种启动解释器的方式是python -c 命令 [arg] ... ,它会执行command中的语句,类似于shell-c 选项。因为Python语句经常包含空格或其他shell特殊字符,通常建议把全部command放在单引号里。

有些 Python 模块也是可执行的脚本。这些模块可以使用 python -m 模块 [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.5
Python 3.5 (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 库参考,见于关于 编解码器 的一节。

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

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

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

脚注

[1]在 Unix 上,为了与同时安装 Python 2.x 可执行文件,默认情况下不是以 python 来为python 3.x 可执行文件命名的。