附錄B 更多IPython系統(tǒng)相關(guān)內(nèi)容
B.5 高階IPython特性
充分利用IPython系統(tǒng)可能會(huì)使你用稍微不同的方式編寫代碼驼壶,或者使你深入了解配置水慨。
B.5.1 使你自定義的類對(duì)IPython友好
IPython會(huì)盡一切努力顯示對(duì)控制臺(tái)友好的字符串夸赫,這些字符串表示的是你想檢查的對(duì)象棵里。對(duì)于許多對(duì)象垮兑,如字典、列表和元組川队,內(nèi)置的pprint模塊可以很好地完成格式化受楼。但是,在用戶定義的類中呼寸,你必須自己生成所需的字符串輸出艳汽。假設(shè)我們有以下簡單的類:
class Message:
def __init__(self, msg):
self.msg = msg
如果你寫了上面的代碼,你會(huì)失望地發(fā)現(xiàn)你的類的默認(rèn)輸出不是很好:
In [576]: x = Message('I have a secret')
In [577]: x
Out[577]: <__main__.Message instance at 0x60ebbd8>
IPython獲取的輸出字符串是由repr的魔術(shù)方法返回的(通過語句output =repr(obj))对雪,并將輸出打印到控制臺(tái)河狐。因此,我們可以增加一個(gè)簡單的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
B.5.2 配置文件與配置
IPython的大部分外觀選項(xiàng)(顏色馋艺、提示和線條間距等)以及IPython和Jupyter環(huán)境的行為可以通過廣泛的設(shè)置系統(tǒng)進(jìn)行配置栅干。下面這些事情都可以通過配置來完成:
- 更改顏色主題
- 更改輸入輸出的外觀,或者去除Out之后和下一個(gè)In之前的空白行
- 執(zhí)行任意的Python語句列表(例如捐祠,導(dǎo)入你總是使用的庫碱鳞,或者是其他你希望每次你啟動(dòng)IPython就運(yùn)行的程序)
- 始終啟用IPython擴(kuò)展,如line_profiler中的% lprun魔術(shù)函數(shù)
- 激活Jupyter拓展
- 自定義魔術(shù)函數(shù)或系統(tǒng)別名
IPython shell的配置在專門的ipython_config.py文件中指定踱蛀,這些文件通常位于用戶主目錄中的.ipython/目錄中窿给。配置是基于特定配置文件執(zhí)行的。當(dāng)你正常啟動(dòng)IPython時(shí)率拒,默認(rèn)情況下會(huì)加載存儲(chǔ)在profile_default目錄中的默認(rèn)配置文件崩泡。因此,在我的Linux操作系統(tǒng)上猬膨,我的默認(rèn)IPython配置文件的完整路徑是:
/home/wesm/.ipython/profile_default/ipython_config.py
要在你自己的系統(tǒng)上初始化該文件角撞,在終端運(yùn)行下面的指令:
ipython profile create
我會(huì)告訴你這個(gè)文件里的內(nèi)容。幸運(yùn)的是它有注釋勃痴,描述每個(gè)配置選項(xiàng)的用途谒所,所以我會(huì)留給讀者修改和定制。另一個(gè)有用的功能是可以有多個(gè)配置文件沛申。假設(shè)你想要為特定應(yīng)用程序或項(xiàng)目定制另一套IPython配置百炬。創(chuàng)建一個(gè)新的配置文件就像輸入下面代碼一樣簡單:
ipython profile create secret_project
完成此操作后,編輯新創(chuàng)建的profle_secret_project目錄中的配置文件污它,然后啟動(dòng)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的官方在線文檔是對(duì)于配置文件和配置是一個(gè)非常好的資源衫贬。Jupyter的設(shè)置略有不同,因?yàn)槟阍贘uypter的notebook中使用的不只是Python語言歇攻。要生成類似的Jupyter配置文件固惯,運(yùn)行下面指令:
jupyter notebook --generate-config
上面的代碼會(huì)將默認(rèn)配置文件寫入主目錄下的.jupyter / jupyter_notebook_confg.py目錄。將配置文件編輯到符合你需求后缴守,你可能會(huì)將它重命名為不同的文件葬毫,比如:
$ mv~/.jupyter/jupyter_notebook_config.py~/.jupyter/my_custom_config.py
在啟動(dòng)Jupyter的時(shí)候,你可以添加--config參數(shù):
jupyter notebook --config=~/.jupyter/my_custom_config.py
B.6 附錄小結(jié)
在你實(shí)驗(yàn)完本書中的代碼示例后屡穗,你的技能獲得增長贴捡,并成為了一名Python編程者,我建議你繼續(xù)學(xué)習(xí)IPython和Jupyter生態(tài)系統(tǒng)的相關(guān)內(nèi)容村砂。由于這些項(xiàng)目只是被設(shè)計(jì)為輔助用戶提高生產(chǎn)力的烂斋,你可能會(huì)發(fā)現(xiàn),與Python語言及其計(jì)算類庫相比,一些工具可以讓你更加簡單地完成工作汛骂。
你還可以在nbviewer網(wǎng)站(https://nbviewer.jupyter.org/)上發(fā)現(xiàn)很多感興趣的Jupyter notebook罕模。