### 8. 顶层的组件
Python 解释器可以从多个源获取输入:从以标准输入或者程序参数传递给它的脚本,交互式输入,模块源文件等。本章给出这些情况下使用的语法。
### 8.1. 完整的Python 程序
虽然语言的规范不需要规定语言的解释器如何被调用,但是对完整的Python 程序有一个概念是很有用的。一个完整的Python 程序在一个最小初始化的环境中执行:可以访问所有的内建和标准模块,但是,除了[sys](# "sys: Access system-specific parameters and functions.")(各种系统服务),[__builtin__](# "__builtin__: The module that provides the built-in namespace.")(内建函数,异常和 None) 以及[__main__](# "__main__: The environment where the top-level script is run."),都没有初始化。后者用来给完整的程序的执行提供局部和全局命名空间。
完整的Python 程序的语法用于文件输入,在下面的小节中讲述。
解释器可能也会在交互模式下被调用;在这种情况下,它不会读取并执行一个完整的程序,但是它会一次读取并执行一条语句(可以是复合语句)。它的初识环境和完整的程序是完全一样的;每一条语句在[__main__](# "__main__: The environment where the top-level script is run.")命名空间中执行。
在Unix下,一个完整的程序可用三种形式传递给解释器:带有[*-c*](#)*string* 的命令行选项,以文件传递的第一个命令行参数,或者以标准输入。如果文件或者标准输入是一个tty 设备,解释器将进入交互模式;否则,它执行文件作为一个完整的程序。
### 8.2. 文件输入
所有从非交互式文件读取的输入都具有相同的形式:
~~~
file_input ::= (NEWLINE | statement)*
~~~
该语法用在以下的情形:
- 当解析一个完整的Python 程序(从一个文件或者一个字符串);
- 当解析一个模块;
- 当解析一个传递给[exec](#)语句的字符串;
### 8.3. 交互式输入
交互模式下的输入使用下面的语法解析:
~~~
interactive_input ::= [stmt_list] NEWLINE | compound_stmt NEWLINE
~~~
注意(顶层)组件的语句在交互模式下后面必须跟随一个空格;它可以帮助解析器检测到输入的结束。
### 8.4. 表达式输入
有两种形式的表达式输入。两种形式都忽略前导的空格。[eval()](# "eval")的字符串参数必须具有以下的形式:
~~~
eval_input ::= expression_list NEWLINE*
~~~
由[input()](# "input")读取的输入行必须具有以下的形式:
~~~
input_input ::= expression_list NEWLINE
~~~
注意:为了读取‘原始’的不用解释的输入行, 你可以使用内建的函数[raw_input()](# "raw_input") 或者文件对象的[readline()](# "readline: GNU readline support for Python. (Unix)")。
- Python 2 教程
- 1. 吊吊你的胃口
- 2. Python 解释器
- 3. Python简介
- 4. 控制流
- 5. 数据结构
- 6. 模块
- 7. 输入和输出
- 8. 错误和异常
- 9. 类
- 10. 标准库概览
- 11. 标准库概览 — 第II部分
- 12.现在怎么办?
- 13. 交互式输入的编辑和历史记录
- 14. 浮点数运算:问题和局限
- Python 2 标准库
- 1. 引言
- 2. 内建函数
- 3. 不太重要的内建函数
- 4. 内建的常量
- 5. 内建的类型
- 6. 内建的异常
- 7. String Services
- 8. Data Types
- 9. Numeric and Mathematical Modules
- 10. File and Directory Access
- 11. Data Persistence
- 13. File Formats
- 14. Cryptographic Services
- 15. Generic Operating System Services
- 16. Optional Operating System Services
- 17. Interprocess Communication and Networking
- 18. Internet Data Handling
- 20. Internet Protocols and Support
- 26. Debugging and Profiling
- 28. Python Runtime Services
- Python 2 语言参考
- 1. 简介
- 2. 词法分析
- 3. 数据模型
- 4. 执行模型
- 5. 表达式
- 6. 简单语句
- 7. 复合语句
- 8. 顶层的组件
- 9. 完整的语法规范
- Python 3 教程
- 1. 引言
- 2. Python 解释器
- 3. Python简介
- 4. 控制流
- 5. 数据结构
- 6. 模块
- 7. 输入和输出
- 8. 错误和异常
- 9. 类
- 10. 标准库概览
- 11. 标准库概览 — 第II部分
- 12.现在怎么办?
- 13. 交互式输入的编辑和历史记录
- 14. 浮点数运算:问题和局限