《利用Python進(jìn)行數(shù)據(jù)分析》 附錄 B.5 高階IPython特性

附錄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-1

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罕模。


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市帘瞭,隨后出現(xiàn)的幾起案子淑掌,更是在濱河造成了極大的恐慌,老刑警劉巖蝶念,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抛腕,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡祸轮,警方通過查閱死者的電腦和手機(jī)兽埃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來适袜,“玉大人柄错,你說我怎么就攤上這事】嘟矗” “怎么了售貌?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長疫萤。 經(jīng)常有香客問我颂跨,道長,這世上最難降的妖魔是什么扯饶? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任恒削,我火速辦了婚禮,結(jié)果婚禮上尾序,老公的妹妹穿的比我還像新娘钓丰。我一直安慰自己,他們只是感情好每币,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布携丁。 她就那樣靜靜地躺著,像睡著了一般兰怠。 火紅的嫁衣襯著肌膚如雪梦鉴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天揭保,我揣著相機(jī)與錄音肥橙,去河邊找鬼。 笑死秸侣,一個(gè)胖子當(dāng)著我的面吹牛快骗,可吹牛的內(nèi)容都是我干的娜庇。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼方篮,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼名秀!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起藕溅,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤匕得,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后巾表,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體汁掠,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年集币,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了考阱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鞠苟,死狀恐怖乞榨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情当娱,我是刑警寧澤吃既,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站跨细,受9級(jí)特大地震影響鹦倚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜冀惭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一震叙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧散休,春花似錦媒楼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽科吭。三九已至昏滴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間对人,已是汗流浹背谣殊。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留牺弄,地道東北人姻几。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蛇捌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子抚恒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容