14. 交互式編輯和編輯歷史?

某些版本的 Python 解釋器支持編輯當(dāng)前輸入行和編輯歷史記錄,類似 Korn shell 和 GNU Bash shell 的功能 。這個功能使用了 GNU Readline 來實現(xiàn),一個支持多種編輯方式的庫。這個庫有它自己的文檔,在這里我們就不重復(fù)說明了。

14.1. Tab 補(bǔ)全和編輯歷史?

在解釋器啟動的時候,補(bǔ)全變量和模塊名的功能將 自動打開,以便在按下 Tab 鍵的時候調(diào)用補(bǔ)全函數(shù)。它會查看 Python 語句名稱,當(dāng)前局部變量和可用的模塊名稱。處理像 string.a 的表達(dá)式,它會求值在最后一個 '.' 之前的表達(dá)式,接著根據(jù)求值結(jié)果對象的屬性給出補(bǔ)全建議。如果擁有 __getattr__() 方法的對象是表達(dá)式的一部分,注意這可能會執(zhí)行程序定義的代碼。默認(rèn)配置下會把編輯歷史記錄保存在用戶目錄下名為 .python_history 的文件。在下一次 Python 解釋器會話期間,編輯歷史記錄仍舊可用。

14.2. 默認(rèn)交互式解釋器的替代品?

Python 解釋器與早期版本的相比,向前邁進(jìn)了一大步;無論怎樣,還有些希望的功能:如果能在編輯連續(xù)行時建議縮進(jìn)(解析器知道接下來是否需要縮進(jìn)符號),那將很棒。補(bǔ)全機(jī)制可以使用解釋器的符號表。有命令去檢查(甚至建議)括號,引號以及其他符號是否匹配。

一個可選的增強(qiáng)型交互式解釋器是 IPython,它已經(jīng)存在了有一段時間,它具有 tab 補(bǔ)全,探索對象和高級歷史記錄管理功能。它還可以徹底定制并嵌入到其他應(yīng)用程序中。另一個相似的增強(qiáng)型交互式環(huán)境是 bpython。