什麼是IPython?可能很多人已經在用,卻不知道它到底是什麼。 根據維基百科的解釋:
IPython是一種基於Python的交互式解釋器,提供了強大的編輯和交互功能。
IPython擁有:
IPython中的『I』即代表交互的意思,所以IPython提供了豐富的工具,能更好地與python進行交互。 大家經常遇到的魔法命令,就是IPython的眾多功能之一。 本文梳理IPython的50個用法,供Python愛好者參考。
註:前面說過IPython提供了jupyter內核,所以Jupyter Notebook是一個基於瀏覽器的IPython shell,支持IPython的所有功能,以下內容均在Jupyter Notebook環境中測試。
在IPython中直接輸入?,可以列印出IPython的功能介紹
在變量後面加上?,可以列印出該變量的詳細信息。 例如圖中一個列表對象,列印出該對象的類型、長度等信息。
??和?功能相似,不過??還可以查看函數或模塊對象的原始碼。
在IPython中,執行history或hist命令能夠查看歷史輸入。
IPython支持tab鍵自動補全。
shell (windows裡叫作cmd)表示使用文本與計算機進行交互的方式,在IPython中,shell命令前加上感嘆號!(英文輸入法)就可以直接執行。 如圖使用ping檢測百度網址。
魔法命令分為兩種,一種是line magics,另外一種cell magics。 Line magic是通過在前面加%,表示magic只在本行有效。 Cell magic是通過在前面加%%,表示magic在整個cell單元有效。
在IPython會話環境中,py文件可以通過%run命令當做Python程序來運行,輸入%run 路徑+文件名稱即可。 如圖,e盤中有一py腳本test.py,在IPython中執行。
IPython使用魔法命令%timeit來測量單行代碼的運行時間。
%%timeit用來測量整個單元格代碼的運行時間.
該魔法命令用來顯示當前工作目錄的路徑。
在notebook中繪製圖像時,使用%matplotlib inline命令可以將圖表直接嵌入到notebook中,方便查看。
%conda install pkgs命令用於在IPython中安裝python第三方庫。
%pylab 魔法命令可以使numpy和matplotlib中的科學計算功能生效,這些功能被稱為基於向量和矩陣的高效操作,交互可視化特性。它能夠讓我們在控制臺進行交互式計算和動態繪圖。
%quickref用來查看IPython的特定語法和魔法命令參考。
%ls path命令可以用來顯示特定目錄下的內容。
使用通配符*?可以模糊查詢方法名及屬性。
%cd命令可以修改當前工作目錄。
使用一個下劃線 _ 獲取前一個輸出結果,它是個變量,實時更新的。 使用兩個下劃線 __可以獲取倒數第二個輸出,使用三個下劃線 ___ 獲取倒數第三個輸出(沒有輸出的命令行不計入在內,只支持前三個輸出結果)。
在語句後面加上;,不顯示輸出結果。
%debug命令支持從最新的異常跟蹤的底部進入交互式調試器。 在ipdb調試模式下能訪問所有的本地變量和整個棧回溯。使用u和d向上和向下訪問棧,使用q退出調試器。在調試器中輸入?可以查看所有的可用命令列表。
%pdb同樣用於啟動交互式調試器,不過支持對所有的異常進行調試。你需要事先啟動%pdb命令,之後對每一個異常都會進行調試。
%run -d用於對腳本進行調試。
%pycat filename用語法高亮顯示一個python文件(不用加.py後綴名)。
%env命令用於顯示環境變量。
%load命令用於將腳本代碼加載到當前cell。
%macro taskname n1 n2...用來定義宏,並給宏命名,執行指定的代碼行。 執行name就是執行n1 n2...這些代碼。
%notebook path用於導出當前notebook內容到指定ipynb文件中。
%pdef命令用來列印類、函數的構造信息。
%pdoc命令用來列印對象的文檔字符串。
%precision命令用來設置浮點數精度,可添加具體參數,無參數則默認精度。
%xdel命令用於刪除變量,並嘗試清楚其在IPython中的對象上的一切引用。
%who命令用於顯示當前所有變量,你也可以指定顯示變量的類型。
%who命令同樣用於顯示當前變量,但提供的信息更加豐富。
%save path n1 n2..命令用於將指定cell代碼保存到指定的py文件中。
%reset -f命令用於刪除定義的所有變量,如果不指定參數-f,則需要確認後再重置。
%rerun命令用於執行之前的代碼,可以指定歷史代碼行,默認最後一行。
%%HTML命令用於將單元格渲染為HTML輸出。
%%javascript命令用於運行含有JavaScript代碼的cell。
%%latex命令用於將LaTeX語句渲染為公式,LaTeX是一種基於ΤΕΧ的排版系統。
%%markdown命令用於將markdown文本渲染為可視化輸出。
%%writefile命令用於將單元格內容寫入到指定文件中,文件格式可為txt、py等。
%bookmark命令能夠保存常用目錄的別名,以便實現快速跳轉,書籤能夠持久化保存。
當你使用 IPython 解釋器時,有件事經常讓你頭疼,那就是粘貼多行代碼塊可能會導致不可預料的錯誤,尤其是其中包含縮進和解釋符號時。 使用%paste命令能夠直接執行剪切板中的python代碼塊。
%magic用於獲取所有魔法命令及其用法。
常會看到IPython 中的In[1]:/Out[1]:形式的提示,它們並不僅僅是好看的裝飾形式,還是包含輸入、輸出的變量。 In 對象是一個列表,按照順序記錄所有的命令。 Out 對象不是一個列表,而是一個字典,它將輸入數字映射到相應的輸出(如果有的話)
%xmode命令用於控制異常輸出的模式。
jupyter qtconsole 是ipython團隊基於qt框架開發的一個GUI控制臺。 它具有富文本編輯功能,既能夠在裡面實現內嵌圖片、多行編輯、語法高亮等。
快捷鍵 動作
Ctrl + a 將光標移到本行的開始處
Ctrl + e 將光標移到本行的結尾處
Ctrl + b(或左箭頭鍵) 將光標回退一個字符
Ctrl + f(或右箭頭鍵) 將光標前進一個字符
快捷鍵 動作
Backspace 鍵 刪除前一個字符
Ctrl + d 刪除後一個字符
Ctrl + k 從光標開始剪切至行的末尾
Ctrl + u 從行的開頭剪切至光標
Ctrl + y yank(即粘貼)之前剪切的文本
Ctrl + t transpose(即交換)前兩個字符
快捷鍵 動作
Ctrl + p(或向上箭頭) 獲取前一個歷史命令
Ctrl + n(或向下箭頭) 獲取後一個歷史命令
Ctrl + r 對歷史命令的反向搜索