14. 交互式输入编辑和历史记录

某些版本的Python解释器支持编辑当前的输入行和历史记录,类似于在Korn shell和GNU Bash shell中看到的功能。这是使用GNU Readline库实现的,它支持各种风格的编辑。这个库有它自己的文档,在这里我们不就重复了。

14.1. Tab补齐和历史记录编辑

变量和模块名称的补齐是在解释器启动时自动启用的,这样Tab键将调用补齐功能;它查看Python语句的名称、当前的局部变量和可用的模块名称。对于点分表达式例如string.a,它将对表达式求值到最后的'.',然后从得到的对象的属性中给出建议的补齐语句。注意,如果表单式部分的对象具有一个__getattr__()方法,这可能执行应用程序定义的代码。默认的配置还会将你的历史纪录保存在你的用户目录下的一个名为.python_history的文件中。在下次与交互式解释器的回话中,历史记录将还可以访问。

14.2. 交互式解释器的替代品

与早期版本的解释器相比,现在是向前巨大的进步;然而,有些愿望还是没有实现:如果能对连续的行给出正确的建议就更好了(解析器知道下一行是否需要缩进)。补全机制可以使用解释器的符号表。检查(或者只是建议)匹配的括号、 引号的命令等也会非常有用。

一个增强的交互式解释器是IPython,它已经存在相当一段时间,具有tab补全、 对象exploration 和高级的历史记录功能。它也可以彻底定制并嵌入到其他应用程序中。另一个类似的增强的交互式环境是bpython