IPython - 魔法命令



與標準 Python shell 相比,魔法命令或魔法函式是 IPython 提供的重要增強功能之一。這些魔法命令旨在解決使用 Python 進行資料分析中的常見問題。事實上,它們控制著 IPython 本身的行為。

魔法命令充當便捷函式,在這些函式中,Python 語法不是最自然的。它們對於在其工作流程中嵌入無效的 Python 語法很有用。

魔法命令的型別

魔法命令有兩種型別:

  • 行魔法
  • 單元格魔法

行魔法

它們類似於命令列呼叫。它們以 % 字元開頭。其餘行是其引數,無需括號或引號傳遞。行魔法可以用作表示式,其返回值可以分配給變數。

單元格魔法

它們具有 %% 字元字首。與行魔法函式不同,它們可以在其呼叫下方操作多行。事實上,它們可以對其接收的輸入進行任意修改,這些輸入甚至根本不必是有效的 Python 程式碼。它們將整個塊作為單個字串接收。

要了解更多關於魔法函式、內建魔法及其文件字串的資訊,請使用魔法命令。特定魔法函式的資訊可以透過 %magicfunction? 命令獲取。現在讓我們描述一些內建的行和單元格魔法命令。

內建行魔法

%autocall [mode]

此魔法函式使函式無需使用括號即可自動呼叫。它接受三個可能的模式引數:0(關閉)、1(智慧)為預設值2(始終開啟)

Built-in line Magics

%automagic

如果設定為 1,則無需鍵入初始 % 即可呼叫魔法函式。在沒有引數的情況下,它會切換開啟/關閉。要停用,請設定為 0。

以下示例顯示了一個魔法函式%pwd(顯示當前工作目錄)在 %automagic 設定為 1 時無需前導 % 即可被呼叫

%automagic

%cd

此行魔法更改當前目錄。此命令會在您的 IPython 會話期間自動維護您訪問的目錄的內部列表,位於變數 _dh 中。您還可以執行“cd -<tab>”以方便地檢視目錄歷史記錄。

%cd

用法

可以使用以下方式使用 %cd 命令:

  • %cd <dir> - 將當前工作目錄更改為 <dir>

  • %cd.. - 將當前目錄更改為父目錄

  • %cd - 更改為上次訪問的目錄。

%dhist

此魔法命令列印您在本會話中訪問的所有目錄。每次使用 %cd 命令時,此列表都會在_dh變數中更新。

%dhist

%edit

此魔法命令呼叫當前作業系統的預設文字編輯器(Windows 的記事本)來編輯 Python 指令碼。指令碼在編輯器關閉時執行。

%env

此魔法命令將列出所有環境變數。它還會讀取特定變數的值或設定環境變數的值。

用法

可以使用以下方式使用 %cd 命令:

  • %env - 列出所有環境變數

  • %env var - 獲取 var 的值

  • %env var val - 設定 var 的值

%env

%gui [GUINAME]

在沒有引數的情況下使用時,此命令啟用或停用 IPython GUI 事件迴圈整合。使用 GUINAME 引數時,此魔法會將預設 GUI 工具包替換為指定的工具包。

序號 命令和描述
1

%gui wx

啟用 wxPython 事件迴圈整合

2

%gui qt4|qt

啟用 PyQt4 事件迴圈整合

3

%gui qt5

啟用 PyQt5 事件迴圈整合

4

%gui gtk

啟用 PyGTK 事件迴圈整合

5

%gui gtk3

啟用 Gtk3 事件迴圈整合

6

%gui tk

啟用 Tk 事件迴圈整合

7

%gui osx

啟用 Cocoa 事件迴圈整合

8

(需要 %matplotlib 1.1)

9

%gui

停用所有事件迴圈整合

%lsmagic

顯示當前可用的所有魔法函式

%lsmagic

%matplotlib

此函式在 IPython 會話期間啟用 matplotlib 互動支援。但是,它不會匯入 matplotlib 庫。matplotlib 預設 GUI 工具包是 TkAgg。但是您可以顯式請求不同的 GUI 後端。您可以看到可用後端的列表,如下所示:

In [4]: %matplotlib --list
Available matplotlib backends: 
['osx', 'qt4', 'qt5', 'gtk3', 'notebook', 'wx', 'qt', 'nbagg','gtk', 'tk', 'inline']

此處顯示的 IPython 會話使用qt工具包繪製正弦波:

%matplotlib

在使用 Jupyter notebook 時,%matplotlib inline 指令僅在瀏覽器中顯示繪圖輸出。

%notebook

此函式將當前 IPython 歷史記錄轉換為具有 ipynb 副檔名的 IPython 筆記本檔案。前面示例中的輸入單元格儲存為 sine.ipynb

%notebook sine.ipynb

%pinfo

此函式類似於物件自省 ? 字元。要獲取有關物件的資訊,請使用以下命令:

%pinfo object

這與object??object同義。

%precision

此魔法函式將浮點結果限制為小數點後指定位數。

%precision

%pwd

此魔法函式返回當前工作目錄。

%pwd

%pylab

此函式使用 matplotlib 和 numpy 庫填充當前 IPython 會話。

%pylab

%recall

在沒有引數的情況下執行時,此函式將執行上一個命令。

請注意,在%recall n中,前面的數字是輸入單元格編號。因此,將呼叫第 n 個單元格中的命令。您可以透過使用諸如%recall 1-4之類的命令來呼叫單元格部分中的命令。當前輸入單元格將使用呼叫的單元格填充,並且游標將閃爍,直到按下 Enter 鍵。

%recall

%run

此命令從 IPython shell 內部執行 Python 指令碼。

%run

%time

此命令顯示 IPython 環境執行 Python 表示式所需的時間。

%time

%timeit

此函式還顯示 IPython 環境執行 Python 表示式所需的時間。Python 語句或表示式的執行時間使用 timeit 模組。此函式可以用作行魔法和單元格魔法,如下所述:

  • 行模式下,您可以計時單行。

  • 單元格模式下,第一行中的語句用作設定程式碼,並且單元格的主體將被計時。單元格主體可以訪問在設定程式碼中建立的任何變數。

%who

此行魔法列印所有互動式變數,並進行一些最少的格式化。如果給出任何引數,則僅列印型別與其中一個匹配的變數。

%who

IPython 自定義行魔法函式

IPython 的核心庫包含 register_line_magic 裝飾器。使用此裝飾器,使用者定義的函式將轉換為行魔法函式。

IPython Custom Line Magic function
廣告

© . All rights reserved.