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

某些版本的 Python 解釋器支持編輯當前輸入行和編輯歷史記錄,類(lèi)似 Korn shell 和 GNU Bash shell 的功能 。這個(gè)功能使用了 GNU Readline 來(lái)實(shí)現,一個(gè)支持多種編輯方式的庫。這個(gè)庫有它自己的文檔,在這里我們就不重復說(shuō)明了。

14.1. Tab 補全和編輯歷史?

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

14.2. 默認交互式解釋器的替代品?

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

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