B.5 IPython高级功能
要全面地使用IPython系统需要用另一种稍微不同的方式写代码,或深入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和Jupyter notebook的外观(颜色、提示符、行间距等等)和动作都是可以配置的。通过配置,你可以做到:
- 改变颜色主题
- 改变输入和输出提示符,或删除输出之后、输入之前的空行
- 执行任意Python语句(例如,引入总是要使用的代码或者每次加载IPython都要运行的内容)
- 启用IPython总是要运行的插件,比如line_profiler中的%lprun魔术函数
- 启用Jupyter插件
- 定义自己的魔术函数或系统别名
IPython的配置存储在特殊的ipython_config.py文件中,它通常是在用户home目录的.ipython/文件夹中。配置是通过一个特殊文件。当你启动IPython,就会默认加载这个存储在profile_default文件夹中的默认文件。因此,在我的Linux系统,完整的IPython配置文件路径是:
/home/wesm/.ipython/profile_default/ipython_config.py
要启动这个文件,运行下面的命令:
ipython profile create
这个文件中的内容留给读者自己探索。这个文件有注释,解释了每个配置选项的作用。另一点,可以有多个配置文件。假设你想要另一个IPython配置文件,专门是为另一个应用或项目的。创建一个新的配置文件很简单,如下所示:
ipython profile create secret_project
做完之后,在新创建的profile_secret_project目录便捷配置文件,然后如下启动IPython:
$ ipython --profile=secret_project
Python 3.5.1 | packaged by conda-forge | (default, May 20 2016, 05:22:56)
Type "copyright", "credits" or "license" for more information.
IPython 5.1.0 -- 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
和之前一样,IPython的文档是一个极好的学习配置文件的资源。
配置Jupyter有些不同,因为你可以使用除了Python的其它语言。要创建一个类似的Jupyter配置文件,运行:
jupyter notebook --generate-config
这样会在home目录的.jupyter/jupyter_notebook_config.py创建配置文件。编辑完之后,可以将它重命名:
$ mv ~/.jupyter/jupyter_notebook_config.py ~/.jupyter/my_custom_config.py
打开Jupyter之后,你可以添加—config参数:
jupyter notebook --config=~/.jupyter/my_custom_config.py