16. 附錄

16.1. 互動模式

There are two variants of the interactive REPL. The classic basic interpreter is supported on all platforms with minimal line control capabilities.

On Windows, or Unix-like systems with curses support, a new interactive shell is used by default. This one supports color, multiline editing, history browsing, and paste mode. To disable color, see Controlling color for details. Function keys provide some additional functionality. F1 enters the interactive help browser pydoc. F2 allows for browsing command-line history without output nor the >>> and ... prompts. F3 enters "paste mode", which makes pasting larger blocks of code easier. Press F3 to return to the regular prompt.

When using the new interactive shell, exit the shell by typing exit or quit. Adding call parentheses after those commands is not required.

If the new interactive shell is not desired, it can be disabled via the PYTHON_BASIC_REPL environment variable.

16.1.1. 錯誤處理

當一個錯誤發生時,直譯器會印出一個錯誤訊息和堆疊回溯。在互動模式下,它將返回主提示字元;當輸入來自檔案時,它在印出堆疊回溯後以非零退出狀態 (nonzero exit status) 退出。 (由 except 子句在 try 陳述式中處理的例外在這種情況下不是錯誤。) 有些錯誤是無條件嚴重的,會導致非零退出狀態;這適用於內部不一致和一些記憶體耗盡的情況。所有的錯誤訊息都被寫入標準錯誤輸出;被執行指令的正常輸出被寫入標準輸出。

向主提示字元或次提示字元輸入中斷字元(通常是 Control-CDelete )會取消輸入並返回到主提示字元。 [1] 在指令執行過程中輸入一個中斷,會引發 KeyboardInterrupt 例外,但可以通過 try 陳述式來處理。

16.1.2. 可執行的 Python 腳本

在類 BSD 的 Unix 系統上,Python 腳本可以直接執行,就像 shell 腳本一樣,通過放置以下這行:

#!/usr/bin/env python3

(假設直譯器在用戶的 PATH 上)在腳本的開頭並給檔案一個可執行模式。 #! 必須是檔案的前兩個字元。 在某些平台上,第一行必須以 Unix 樣式的換行 ('\n') 結尾,而不是 Windows ('\r\n') 換行。 請注意,井號 '#' 用於在 Python 中開始註解。

可以使用 chmod 指令為腳本賦予可執行模式或權限。

$ chmod +x myscript.py

在 Windows 系統上,沒有「可執行模式」的概念。 Python 安裝程式會自動將 .py 檔案與 python.exe 聯繫起來,這樣雙擊 Python 檔案就會作為腳本運行。副檔名也可以是 .pyw,在這種情況下,通常會出現的控制台視窗會被隱藏。

16.1.3. 互動式啟動檔案

當你互動式地使用 Python 時,每次啟動直譯器時執行一些標準指令是非常方便的。你可以通過設置一個名為 PYTHONSTARTUP 的環境變數來實現,該變數是一個包含啟動指令的檔案名。它的功能類似 Unix shell 的 .profile

這個檔案只在互動模式中被讀取,當 Python 從腳本中讀取指令時,此檔案不會被讀取,當 /dev/tty 作為指令的明確來源時也不會(否則表現得像互動模式)。它在執行互動式指令的同一命名空間中執行,因此它所定義或 import 的物件可以在互動模式中不加限定地使用。你也可以在這個檔案中改變 sys.ps1sys.ps2 等提示字元。

如果你想從當前目錄中讀取一個額外的啟動檔案,你可以在全域啟動檔案中使用類似 if os.path.isfile('.pythonrc.py'): exec(open('.pythonrc.py').read() 的程式碼設定這個行為。如果你想在一個腳本中使用啟動檔案,你必須在腳本中明確地這樣做:

import os
filename = os.environ.get('PYTHONSTARTUP')
if filename and os.path.isfile(filename):
    with open(filename) as fobj:
        startup_file = fobj.read()
    exec(startup_file)

16.1.4. 客製化模組

Python 提供了兩個鉤子 (hook) 讓你可以將它客製化: sitecustomize 和 usercustomize 。要看它是如何運作的,你首先需要找到你的 site-packages 的位置。啟動 Python 並運行這段程式碼:

>>> import site
>>> site.getusersitepackages()
'/home/user/.local/lib/python3.x/site-packages'

現在,你可以在該目錄中建立一個名為 usercustomize.py 的檔案,並將你想要的任何內容放入其中。它會影響 Python 的每次呼叫,除非它以 -s 選項啟動以禁用自動 import 。

sitecustomize 的運作方式相同,但通常是由電腦的管理員在全域 site-packages 目錄下建立,並在 usercustomize 之前 import 。更多細節請參閱 site 模組的文件。

註解