2. 使用Python 解释器

2.1. 调用解释器

在装了Python3.5的类Unix风格的系统上,Python解释器通常位于/usr/local/bin/python3.5。把/usr/local/bin加入Unix shell的系统搜索路径,之后在终端或字符界面输入以下命令:

python3.5

即可启动Python3.5。[1]由于放Python解释器的目录在安装时可以选择自定义,所以也有可能在其他的路径。如果不在默认路径,请联系您本地的Python专家或系统管理员。(比如,/usr/local/python就是一个常见的自定义安装位置)

在Windows中,Python 通常安装在 C:\Python35。不过,在运行安装程序时,您可以更改安装路径。您可以在命令提示符的DOS窗口中输入以下命令,把Python的安装目录(以 C:\Python35 为例)添加到PATH中:

set path=%path%;C:\python35

Python以交互方式从命令行启动,为主提示符模式。在主提示符模式下,输入EOF(文件结束符),可以让Python解释器(以0为状态码)正常退出。EOF在类Unix环境下为Ctrl + D,Windows下为Ctrl + Z如果以上方式没用,您也可以输入quit()来退出解释器。

在支持readline的系统上,Python命令行编辑特性包括:交互式编辑,上下键回溯复制历史Python代码,还有代码补全。也许,检查是否支持命令行编辑的最快方式是:在Python提示符里输入Ctrl + P如果响起嘟的一声,表明有命令行编辑。请参阅附录《交互式输入编辑和回溯并复制历史代码》 里相关快捷键的介绍。如果什么都没发生,或者显示^P,则命令行编辑不可用;你只能用退格键删除这行字符。

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

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

有些Python模块也是可执行的脚本。这些模块可以使用 python -m 模块 [参数] 直接调用,这和在命令行输入完整的路径名执行模块的源文件是一样的。

有时在用一个脚本文件的时候,想要在这个脚本跑完之后进入交互模式。这可以通过在脚本前面加上-i选项实现。

我们会在后续章节 命令行和环境 中介绍命令行的所有选项。

2.1.1. 传递参数

传递给解释器后,脚本名称和名称后面的其他参数被转换成一个字符串列表并赋值给sys模块中的argv变量。你可以import sys拿到这个列表。列表的长度至少是1,如果没有给出脚本和任何参数,sys.argv[0] 是一个空字符串。当脚本名称指定为'-'(代表标准输入),sys.argv[0] 被设为 '-'当使用 -c 命令 时,sys.argv[0] 被设为 '-c'当使用 -m 模块 时,sys.argv[0] 被设为指定模块的全名。Python解释器不会解析 -c 命令-m 模块 后面的选项,这些选项保存在 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 的时候和它发生冲突,默认情况下 python 3 的可执行文件不占用 python 这个名字。