14. 互動式輸入編輯和歷史替換

某些版本的 Python 直譯器支援當前輸入行的編輯和歷史替換,類似於 Korn shell 和 GNU Bash shell 中的功能。這是使用 GNU Readline 庫實現的,該庫支援各種編輯風格。該庫有自己的文件,我們在此不再贅述。

14.1. Tab 補全和歷史編輯

變數和模組名稱的補全在直譯器啟動時自動啟用,以便 Tab 鍵呼叫補全函式;它會檢視 Python 語句名稱、當前區域性變數和可用的模組名稱。對於像 string.a 這樣的帶點表示式,它會評估表示式直到最後的 '.',然後根據結果物件的屬性建議補全。請注意,如果表示式中包含一個帶有 __getattr__() 方法的物件,這可能會執行應用程式定義的程式碼。預設配置還會將您的歷史記錄儲存到使用者目錄中名為 .python_history 的檔案中。在下一次互動式直譯器會話期間,歷史記錄將再次可用。

14.2. 互動式直譯器的替代方案

與早期版本的直譯器相比,此功能是一個巨大的進步;然而,仍然有一些期望:如果能在續行上建議正確的縮排(解析器知道接下來是否需要一個 INDENT 標記)那就太好了。補全機制可以使用直譯器的符號表。一個檢查(甚至建議)匹配括號、引號等的命令也很有用。

一個已經存在了相當長時間的增強型互動式直譯器是 IPython,它具有 Tab 補全、物件探索和高階歷史管理功能。它還可以徹底定製並嵌入到其他應用程式中。另一個類似的增強型互動式環境是 bpython