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

有些版本的 Python 直譯器支援當前輸入內容的編輯和歷史記錄的替換
(history substitution)，類似在 Korn shell 和 GNU Bash shell 中的功能。
這個功能是用 GNU Readline 函式庫來實作，它支援多種編輯的風格。這個函式
庫有它自己的說明文件，在這裡我們就不重複了。


14.1. Tab 鍵自動完成 (Tab Completion) 和歷史記錄編輯 (History Editing)
======================================================================

在解释器启动的时候变量和模块名补全功能将 自动启用 以便在按下 "Tab" 键
时发起调用补全函数；它会查找 Python 语句名称、当前局部变量和可用的模块
名称。 对于带点号的表达式如 "string.a"，它会对该表达式最后一个 "'.'"
之前的部分求值然后根据结果对象的属性给出补全建议。 请注意如果具有
"__getattr__()" 方法的对象是该表达式的一部分这可能会执行应用程序定义的
代码。 默认配置还会将你的编辑历史保存到你的用户目录下名为
".python_history" 的文件。 该历史在下一次交互式解释器会话期间将继续可
用。


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

與早期版本的直譯器相比，上述功能的出現的確是一個巨大的進步；但還是有一
些願望沒有被實現：如果能在每次換行時給予適當的縮排建議（剖析器
(parser) 知道下一行是否需要縮排標記 (indent token)），那就更棒了。自動
完成機制可能會使用直譯器的符號表。若有一個命令能夠檢查（或甚至建議）括
號、引號和其他符號的匹配，那也會很有用。

有一個功能增強的互動式直譯器替代方案，已經存在一段時間，稱為 IPython，
它具有 Tab 鍵自動完成、物件探索和進階歷史記錄管理等特色。它也可以完全
客製化並被嵌入到其他應用程式中。另一個類似的增強型互動式環境，稱為
bpython。
