14. 交互式输入编辑与历史替换

一些版本的python解释器支持当前输入行的编辑和历史替换,类似于korn shell和gnu bash shell中的工具。这是使用 GNU Readline 库,它支持各种样式的编辑。这个类库有自己的文档,我们不会在这里复制。

14.1. 制表完成和历史编辑

变量和模块名称的完成是 automatically enabled 在解释器启动时, Tab 键调用完成函数;它查看python语句名、当前局部变量和可用模块名。对于点式表达式,例如 string.a ,它将对表达式进行计算,直到最后 '.' 然后根据结果对象的属性建议完成。注意,如果对象具有 __getattr__() 方法是表达式的一部分。默认配置还将您的历史记录保存到名为 .python_history 在用户目录中。在下一个交互式解释程序会话期间,历史记录将再次可用。

14.2. 交互式解释器的替代方案

与早期版本的解释器相比,这个工具向前迈出了巨大的一步;但是,还有一些愿望:如果在续行上建议正确的缩进(解析器知道下一步是否需要缩进标记),那就更好了。完成机制可能使用解释器的符号表。检查(甚至建议)匹配括号、引号等的命令也很有用。

一个已经存在很长时间的增强型交互式解释程序是 IPython, 其中包括制表完成、对象探索和高级历史管理。它还可以完全定制并嵌入到其他应用程序中。另一个类似的增强型交互环境是 bpython.