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

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

14.1. Tab 補全和歷史記錄編輯

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

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

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

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