14. 互動式輸入編輯和歷史記錄替換¶
有些版本的 Python 直譯器支援當前輸入內容的編輯和歷史記錄的替換 (history substitution),類似在 Korn shell 和 GNU Bash shell 中的功能。這個功能是用 GNU Readline 函式庫來實作,它支援多種編輯的風格。這個函式庫有它自己的說明文件,在這裡我們就不重複了。
14.1. Tab 鍵自動完成 (Tab Completion) 和歷史記錄編輯 (History Editing)¶
在直譯器啟動的時候,變數和模組名稱的自動完成功能會被自動啟用,所以可以用 Tab 鍵來呼叫自動完成函式;它會查看 Python 的陳述式名稱、當前區域變數名稱和可用模組名稱。對於像是 string.a
的點分隔運算式 (dotted expression),它會對最後一個 '.'
之前的運算式求值,然後根據求值結果物件的屬性,給予自動完成的建議。請注意,如果一個物件有 __getattr__()
method(方法),同時又是該運算式的一部份,這樣可能會執行應用程式自定義的程式碼。預設設定也會把你的指令歷史記錄儲存在你的使用者資料夾內,一個名為 .python_history
的檔案中。在下一次啟動互動式直譯器時,這些歷史記錄依然可以被使用。
14.2. 互動式直譯器的替代方案¶
This facility is an enormous step forward compared to earlier versions of the
interpreter; however, some wishes are left: It would be nice if the proper
indentation were suggested on continuation lines (the parser knows if an
INDENT
token is required next). The completion mechanism might
use the interpreter's symbol table. A command to check (or even suggest)
matching parentheses, quotes, etc., would also be useful.
有一個功能增強的互動式直譯器替代方案,已經存在一段時間,稱為 IPython,它具有 Tab 鍵自動完成、物件探索和進階歷史記錄管理等特色。它也可以完全客製化並被嵌入到其他應用程式中。另一個類似的增強型互動式環境,稱為 bpython。