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

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

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

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

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

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

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