python基础教程之Top-level components

python基础教程之Top-level components


9. Top-level components

The Python interpreter can get its input from a number of sources: from a script passed to it as standard input or as program argument, typed in interactively, from a module source file, etc. 本章给出这些情况下使用的语法。


9.1. Complete Python programs

虽然语言的规范不需要规定语言的解释器如何被调用,但是对完整的Python 程序有一个概念是很有用的。A complete Python program is executed in a minimally initialized environment: all built-in and standard modules are available, but none have been initialized, except for sys (various system services), builtins (built-in functions, exceptions and None) and __main__. 后者用来给完整的程序的执行提供局部和全局命名空间。

完整的Python 程序的语法用于文件输入,在下面的小节中讲述。

解释器可能也会在交互模式下被调用;在这种情况下,它不会读取并执行一个完整的程序,但是它会一次读取并执行一条语句(可以是复合语句)。它的初识环境和完整的程序是完全一样的;每一条语句在__main__命名空间中执行。

Under Unix, a complete program can be passed to the interpreter in three forms: with the -c string command line option, as a file passed as the first command line argument, or as standard input. 如果文件或者标准输入是一个tty 设备,解释器将进入交互模式;否则,它执行文件作为一个完整的程序。


9.2. File input

所有从非交互式文件读取的输入都具有相同的形式:

file_input ::=  (NEWLINE | statement)*

该语法用在以下的情形:

  • 当解析一个完整的Python 程序(从一个文件或者一个字符串);
  • 当解析一个模块;
  • when parsing a string passed to the exec() function;

9.3. Interactive input

交互模式下的输入使用下面的语法解析:

interactive_input ::=  [stmt_list] NEWLINE | compound_stmt NEWLINE

注意(顶层)组件的语句在交互模式下后面必须跟随一个空格;它可以帮助解析器检测到输入的结束。


9.4. Expression input

eval() is used for expression input. It ignores leading whitespace. eval()的字符串参数必须具有以下的形式:

eval_input ::=  expression_list NEWLINE*

留下回复