9. 顶级组件¶
python解释器可以从许多源代码中获取其输入:从作为标准输入或作为程序参数传递给它的脚本,以交互方式键入,从模块源文件等。本章给出了在这些情况下使用的语法。
9.1. 完成python程序¶
虽然语言规范不需要规定如何调用语言解释器,但是有一个完整的Python程序的概念是很有用的。完整的python程序是在一个最小初始化的环境中执行的:所有的内置模块和标准模块都是可用的,但是除了 sys
(各种系统服务) builtins
(内置功能、例外和 None
) __main__
. 后者用于为整个程序的执行提供本地和全局命名空间。
完整的python程序的语法是用于文件输入的语法,将在下一节中介绍。
解释器也可以在交互模式下调用;在这种情况下,解释器不读取和执行完整的程序,而是一次读取和执行一条语句(可能是复合语句)。初始环境与完整程序的环境相同;每个语句都在的命名空间中执行。 __main__
.
完整的程序可以通过三种形式传递给解释器:使用 -c
string 命令行选项,作为作为作为第一个命令行参数传递的文件,或作为标准输入。如果文件或标准输入是TTY设备,则解释器进入交互模式;否则,解释器将作为完整程序执行文件。
9.2. 文件输入¶
从非交互式文件读取的所有输入都具有相同的格式:
file_input ::= (NEWLINE | statement
)*
此语法用于以下情况:
分析完整的python程序时(从文件或字符串);
分析模块时;
分析传递给
exec()
功能;
9.3. 交互式输入¶
交互模式下的输入使用以下语法进行分析:
interactive_input ::= [stmt_list
] NEWLINE |compound_stmt
NEWLINE
注意,在交互模式下,(顶级)复合语句后面必须跟一个空行;这有助于解析器检测输入的结尾。
9.4. 表达式输入¶
eval()
用于表达式输入。它忽略了前导空格。字符串参数 eval()
必须具有以下格式:
eval_input ::= expression_list
NEWLINE*