高级IPython功能
让你的类对IPython更加友好
IPython力求为各种对象呈现一个友好的字符串表示。对于许多对象(如字典、列表和元组等),内置的pprint模块就能给出漂亮的格式。但是对于你自己定义的那些类,就必须自己生成所需的字符串输出。假设我们有下面这个简单的类:
- class Message:
- def __init__(self, msg):
- self.msg = msg
如果像下面这样写,你就会失望地发现这个类的默认输出形式非常不好看:
- In [576]: x = Message('I have a secret')
- In [577]: x
- Out[577]: <__main__.Message instance at 0x60ebbd8>
由于IPython会获取repr方法返回的字符串(具体办法是output=repr(obj)),并将其显示到控制台上。因此,我们可以为上面那个类添加一个简单的repr方法以得到一个更有意义的输出形式:
- class Message:
- def __init__(self, msg):
- self.msg = msg
- def __repr__(self):
- return 'Message: %s' % self.msg
- In [579]: x = Message('I have a secret')
- In [580]: x
- Out[580]: Message: I have a secret
个性化和配置
IPython shell在外观(如颜色、提示符、行间距等)和行为方面的大部分内容都是可以进行配置的。下面是能够通过配置做的部分事情:
·修改颜色方案。
·修改输入输出提示符。
·去掉Out提示符跟下一个In提示符之间的空行。
·执行任意Python语句。这些语句可以用于引入所有常用的东西,还可以做一些你希望每次启动IPython都发生的事情。
·启用IPython扩展,如line_profiler中的魔术命令%lprun。
·定义你自己的魔术命令或系统别名。
所有这些配置选项都定义在一个叫做ipython_config.py的文件中,可以在~/.config/ipython/目录(UNIX)和%HOME%/.ipython/目录(Windows)中找到。具体的主目录取决于你的系统。配置信息是基于特定个性化设置的。一般来说,正常启动IPython将会加载默认的个性化设置(位于profile_default目录中)。因此,在我的Linux系统中,默认IPython配置文件的完整路径是:
- /home/wesm/.config/ipython/profile_default/ipython_config.py
这里我就不对该文件的内容作详细介绍了。因为其注释已经说明了各个配置项的功能,各位读者完全可以自己照着做。还有一个很实用的功能是拥有多个个性化设置。假设你想要专门为某个应用程序或项目量身定做一套IPython配置。输入下面这样的命令即可新建一个个性化设置:
- ipython profile create secret_project
然后编辑新建的这个profile_secret_project目录中的配置文件,再用下面这种方式启动IPython:
- $ ipython --profile=secret_project
- Python 2.7.2 |EPD 7.1-2 (64-bit)| (default, Jul 3 2011, 15:17:51)
- Type "copyright", "credits" or "license" for more information.
- IPython 0.13 -- An enhanced Interactive Python.
- ? -> Introduction and overview of IPython's features.
- %quickref -> Quick reference.
- help -> Python's own help system.
- object? -> Details about 'object', use 'object??' for extra details.
- IPython profile: secret_project
- In [1]:
同样,有关个性化和配置方面的详细信息,请参考IPython的在线文档。