16.附錄¶
16.1.互動模式¶
There are two variants of the interactiveREPL. The classicbasic interpreter is supported on all platforms with minimal linecontrol capabilities.
On Windows, or Unix-like systems withcurses
support,a new interactive shell is used by default.This one supports color, multiline editing, history browsing, andpaste mode. To disable color, seeControlling color fordetails. Function keys provide some additional functionality.F1 enters the interactive help browserpydoc
.F2 allows for browsing command-line history with neither output nor the>>> and... prompts.F3 enters "paste mode", whichmakes pasting larger blocks of code easier. PressF3 to return tothe regular prompt.
When using the new interactive shell, exit the shell by typingexitorquit. Adding call parentheses after those commands is notrequired.
If the new interactive shell is not desired, it can be disabled viathePYTHON_BASIC_REPL
environment variable.
16.1.1.錯誤處理¶
當一個錯誤發生時,直譯器會印出一個錯誤訊息和堆疊回溯。在互動模式下,它將返回主提示字元;當輸入來自檔案時,它在印出堆疊回溯後以非零退出狀態 (nonzero exit status) 退出。 (由except
子句在try
陳述式中處理的例外在這種情況下不是錯誤。) 有些錯誤是無條件嚴重的,會導致非零退出狀態;這適用於內部不一致和一些記憶體耗盡的情況。所有的錯誤訊息都被寫入標準錯誤輸出;被執行指令的正常輸出被寫入標準輸出。
向主提示字元或次提示字元輸入中斷字元(通常是Control-C 或Delete )會取消輸入並返回到主提示字元。[1] 在指令執行過程中輸入一個中斷,會引發KeyboardInterrupt
例外,但可以通過try
陳述式來處理。
16.1.2.可執行的 Python 腳本¶
在類 BSD 的 Unix 系統上,Python 腳本可以直接執行,就像 shell 腳本一樣,通過放置以下這行:
#!/usr/bin/env python3
(假設直譯器在用戶的PATH
上)在腳本的開頭並給檔案一個可執行模式。#!
必須是檔案的前兩個字元。 在某些平台上,第一行必須以 Unix 樣式的換行 ('\n'
) 結尾,而不是 Windows ('\r\n'
) 換行。 請注意,井號'#'
用於在 Python 中開始註解。
可以使用chmod 指令為腳本賦予可執行模式或權限。
$chmod+xmyscript.py
在 Windows 系統上,沒有「可執行模式」的概念。 Python 安裝程式會自動將.py
檔案與python.exe
聯繫起來,這樣雙擊 Python 檔案就會作為腳本運行。副檔名也可以是.pyw
,在這種情況下,通常會出現的控制台視窗會被隱藏。
16.1.3.互動式啟動檔案¶
當你互動式地使用 Python 時,每次啟動直譯器時執行一些標準指令是非常方便的。你可以通過設置一個名為PYTHONSTARTUP
的環境變數來實現,該變數是一個包含啟動指令的檔案名。它的功能類似 Unix shell 的.profile
。
這個檔案只在互動模式中被讀取,當 Python 從腳本中讀取指令時,此檔案不會被讀取,當/dev/tty
作為指令的明確來源時也不會(否則表現得像互動模式)。它在執行互動式指令的同一命名空間中執行,因此它所定義或 import 的物件可以在互動模式中不加限定地使用。你也可以在這個檔案中改變sys.ps1
和sys.ps2
等提示字元。
如果你想從目前目錄中讀取一個額外的啟動檔案,你可以在全域啟動檔案中使用類似ifos.path.isfile('.pythonrc.py'):exec(open('.pythonrc.py').read()
的程式碼設定這個行為。如果你想在一個腳本中使用啟動檔案,你必須在腳本中明確地這樣做:
importosfilename=os.environ.get('PYTHONSTARTUP')iffilenameandos.path.isfile(filename):withopen(filename)asfobj:startup_file=fobj.read()exec(startup_file)
16.1.4.客製化模組¶
Python 提供了兩個鉤子 (hook) 讓你可以將它客製化:sitecustomize 和usercustomize 。要看它是如何運作的,你首先需要找到你的 site-packages 的位置。啟動 Python 並運行這段程式碼:
>>>importsite>>>site.getusersitepackages()'/home/user/.local/lib/python3.x/site-packages'
現在,你可以在該目錄中建立一個名為usercustomize.py
的檔案,並將你想要的任何內容放入其中。它會影響 Python 的每次呼叫,除非它以-s
選項啟動以禁用自動 import 。
sitecustomize 的運作方式相同,但通常是由電腦的管理員在全域 site-packages 目錄下建立,並在usercustomize 之前 import 。更多細節請參閱site
模組的文件。
註解
[1]GNU Readline 套件的一個問題可能會阻止這一點。