99插插插,亚洲伦理中文在线,站长推荐一二三区欧美,青青草在线导航

×

12個常用的IPython魔法命令

分類:互聯(lián)網(wǎng)熱點 編輯:聊聊云計算 瀏覽量:1
2020-07-13 16:55:23

不能以偏概全哈,就我個人而言,在日常編程中一般都會用到兩個編譯器——Pycharm和Jupyter,在刷算法時會用到前者,因為我習慣用Pycharm里的Debug功能調(diào)試,很容易找出代碼中的Bug。

而進行數(shù)據(jù)分析、機器學習時就會用到后者,因為Jupyter編譯器利用的IPython是一種交互式計算和開發(fā)環(huán)境,對數(shù)據(jù)的可視化十分友好,這類單元格的形式每一步都有運行結(jié)果,便于整理自己思路,并且很大程度上節(jié)約了運行時間,在調(diào)試的時候只需要運行出錯的部分代碼,而不是全部。

IPython中有一些特有的魔法命令,如果能合理的利用這些魔法命令,會省去很多不必要的操作,為編程帶來很大程度的便利,下面就來安利十二個常用的魔法命令。

基礎常識

    ?和?? ->例:%matplotlib?、%matplotlib??

后綴為?可以獲取一個對象的相關信息,比如描述一個方法該怎么用;后綴為??可以獲取該對象更加詳細的信息,比如源碼。這個對象可以是IPython中自帶的、也可以是導入的、也可以是自己定義的。

    %和%% ->例:%time、%%time

前綴為%被稱作行魔法命令(line magics),只能在單個輸入行上運行;前綴為%%被稱作單元格魔法命令(cell magics),可以在多個輸入行上運行。

1.%Ismagic和%magic

如果你還不了解IPython的魔法命令,那這兩個魔法命令一定是最重要的,記牢這兩個命令之后慢慢了解剩下的。%lsmagic的作用就是列出所有存在的行魔法命令和單元格魔法命令,部分截圖如下:

%magic的作用就是給出所有魔法命令的詳細介紹,比如介紹、樣例等等,比較考驗英語功底,耐下心慢慢了解。

2.%pdb

輸入這個命令并且運行之后,如果后面的代碼出現(xiàn)了異常,這個指令就會主動進入調(diào)試器,幾十行幾百行代碼難免會有幾個或一堆Bug。可能比較笨的方法就是找斷點然后print,最后還要把print刪掉,而%pdb調(diào)試找到Bug后直接退出就好,相對前者更方便些。

比如兩個數(shù)相加,不小心把一個整數(shù)定義成字符型,在調(diào)用函數(shù)計算時會發(fā)生報錯,然后就可以進入調(diào)試器進行調(diào)試,切記最后要通過exit()退出,不能直接終止單元格運行。

3.%debug

%debug的作用與%pdb幾乎是一樣的,不同之處就是%pdb在遇到異常自動進入調(diào)試器,而%debug是人遇到報錯主動輸入指令進入調(diào)試器,仍然是上面那個例子,調(diào)試界面如下:

主動和被動兩種調(diào)試方式大家可以靠自己喜好選擇,我個人比較喜歡%debug。

4.%who和%whos

代碼一多變量可能就會變多,變量一多可能就會混淆,或者在刪除單元格的時候不小心把變量定義的單元格也刪掉了,%who和%whos這兩條命令就起到大作用了。

%who給出的信息只有全局變量的名稱,而%whos給出的信息更加詳細,包括變量名稱、類型、和數(shù)據(jù)。

5.%time和%timeit

這兩條命令都是用來輸出代碼的執(zhí)行時間,比如可以用來粗略的比較兩種算法在相同的問題上執(zhí)行時間哪一個更少,不同點在于%time只執(zhí)行一次就輸出執(zhí)行時間,而%timeit是執(zhí)行多次然后計算平均時間再輸出。

比如這里%timeit命令輸出中有7 runs代表共執(zhí)行7次,這兩個命令都為行命令,%%time和%%timeit為單元格 命令,區(qū)別同上。

6.%store

如果你在一個文件中花了很長的時間清理了一些數(shù)據(jù),比如對原始數(shù)據(jù)缺失值填充呀、降維呀、轉(zhuǎn)換呀等等,然后在另一個文件中需要用到同樣的數(shù)據(jù),笨一點方法就是將數(shù)據(jù)保存然后在新文件中調(diào)用,但這種操作一條%store命令就能完成,我們先在一個文件中利用%store保存一個變量。

然后在另一個文件中調(diào)用這個變量:

可以看到直接調(diào)用是會報錯的,但利用了%store -r命令之后就可以成功調(diào)用被%store保存的變量,所以%store用來保存,%store -r用來讀取。

7.%xdel和%reset

這條命令的作用就是刪除變量,并且刪除其在IPython中的對象上的一切引用。平時在數(shù)據(jù)清洗時,從原始數(shù)據(jù)到清洗后的數(shù)據(jù)中間要經(jīng)過很多步驟,我們不可能全程用一個變量名稱,所以中間步驟很容易為數(shù)據(jù)起一些類似的名稱,而利用%xdel就可以將無用的單個變量名稱刪掉,防止混淆。

%reset的作用就是刪除所有變量名。

8.%cls

在數(shù)據(jù)清洗時候,通常都是做一步然后輸出一次數(shù)據(jù)集,觀察一下變化,我們都知道展示數(shù)據(jù)集是很占網(wǎng)頁的,久而久之,這個notebook就特別長,再想查看文件前面的內(nèi)容不僅需要滾動很長時間滑輪,而且數(shù)據(jù)間很容易混淆,所以每當輸出一次數(shù)據(jù)集后可以利用%cls命令清除一次,使notebook看起來更整潔。

可以看到正常的話data之后會打印數(shù)據(jù)集,但利用%cls之后數(shù)據(jù)集的輸出被清除了。

9.%%writefile

如果我們想寫一個函數(shù),例如去除中文符號的函數(shù),這樣的函數(shù)在很多 情景下都可以利用,所以我們可以將這個函數(shù)寫入一個單獨文件,想用的時候直接調(diào)用,這個操作可以利用%%writefile命令進行寫入。

10.%run

%run命令的作用就是運行腳本文件,不僅可以直接使用腳本文件中的代碼,腳本文件也可以使用IPython環(huán)境中的變量,仍用上面的例子,可以用%run命令直接運行。

11.%psource

如果你在notebook定義了一個函數(shù),但隔了比較久需要用到這個函數(shù),但是可能忘記了這個函數(shù)需要傳入哪些參數(shù)、或者傳入?yún)?shù)的類型應該是什么,這種情況下就不得不往前翻尋找這個函數(shù)的代碼,但利用%psource可以偷懶,這個命令就是輸出源代碼。

前面提及的??也有相同的作用,但是輸出的形式?jīng)]有%psource直觀,還混有其它的信息在里面。

12.%hist

%hist的作用就是打印所有命令行輸入的歷史記錄,方便查看之前輸入的代碼信息。

這個命令允許設置查詢的區(qū)間,也就是命令行輸入對應的序號。

這些魔法命令有一部分能被常用的代碼語句代替,但是卻沒有魔法命令簡單明了,只是個人習慣的問題,如果可能盡量改掉自己的思維定式,用更加便捷的代碼處理問題。

<div>【責任編輯:龐桂玉 TEL:(010)68476606】

聲明:免責聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權,也不承認相關法律責任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,請發(fā)

送郵件至:operations@xinnet.com進行舉報,并提供相關證據(jù),一經(jīng)查實,本站將立刻刪除涉嫌侵權內(nèi)容。本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時

需注明出處:新網(wǎng)idc知識百科

免費咨詢獲取折扣

Loading
久久老熟户| 欧美性爱a级精品| 白虎成人在线观看| 欧美日韩精品人妻少妇| 少妇精品久久久久久久久| 黄色av网址| 亚洲色吧综合视频| 91人妻视频网| www.91人人做 人人爱| 中文字幕三级一区二区三区| 欧美日韩亚洲二期| 一区二区精品区| 大香蕉伊人在线成人视频| 日韩射精在线看视频| 国内自拍偷拍1区| 激情人妻偷拍| 国产美女操屄| 男女靠逼一区| 欧美人人艹天天操| 熟女欧美一区| 亚洲淑女激情| 亚洲一级不卡视频| 欧美日韩日本久久| 免费擦b视频| 色老大视频在线| 少妇高潮九九九| www.hhhh| 欧美日韩综合一区不卡:| 久久熟女五月久久熟女| 亚洲国产贱货中文在线观看| AV片无码在线| 三级黄色小视频| 高清无码 国产一区 99 蜜臀| 大香蕉av有线| 99无码66| 青青草视频这里只有精品在线观看| 外国美女操B视频| 黄片中文一区制服| 无码,黑人,三级,中文字幕,av| 久久国产三级麻豆蜜臀| 国产情人节一区二区|