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 这个名字。 |