### 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. 浮點數運算:問題和局限