9. 顶级组件 — Python 文档
来自菜鸟教程
Python/docs/3.7/reference/toplevel components
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
请注意,在交互模式下,(顶级)复合语句必须后跟一个空行; 这是帮助解析器检测输入结束所必需的。