- Jupyter 教程
- Jupyter - 首頁
- IPython
- IPython - 簡介
- IPython - 安裝
- IPython - 入門
- 執行和編輯 Python 指令碼
- IPython - 歷史命令
- IPython - 系統命令
- IPython - 命令列選項
- 動態物件自省
- IPython - IO 快取
- 將 IPython 設定為預設 Python 環境
- 匯入 Python Shell 程式碼
- IPython - 嵌入 IPython
- IPython - 魔法命令
- Jupyter
- Project Jupyter - 概述
- Jupyter Notebook - 簡介
- 使用線上 Jupyter
- 安裝和入門
- Jupyter Notebook - 儀表盤
- Jupyter Notebook - 使用者介面
- Jupyter Notebook - 單元格型別
- Jupyter Notebook - 編輯
- Jupyter Notebook - Markdown 單元格
- 單元格魔法函式
- Jupyter Notebook - 繪圖
- 轉換筆記本
- Jupyter Notebook - IPyWidgets
- QtConsole
- QtConsole - 入門
- QtConsole - 多行編輯
- QtConsole - 內聯圖形
- QtConsole - 儲存為 Html
- QtConsole - 多個控制檯
- 連線到 Jupyter Notebook
- 使用 github 和 nbviewer
- JupyterLab
- JupyterLab - 概述
- 安裝和入門
- JupyterLab - 介面
- JupyterLab - 安裝 R 核心
- Jupyter 資源
- Jupyter - 快速指南
- Jupyter - 有用資源
- Jupyter - 討論
IPython - 魔法命令
與標準 Python shell 相比,魔法命令或魔法函式是 IPython 提供的重要增強功能之一。這些魔法命令旨在解決使用 Python 進行資料分析中的常見問題。事實上,它們控制著 IPython 本身的行為。
魔法命令充當便捷函式,在這些函式中,Python 語法不是最自然的。它們對於在其工作流程中嵌入無效的 Python 語法很有用。
魔法命令的型別
魔法命令有兩種型別:
- 行魔法
- 單元格魔法
行魔法
它們類似於命令列呼叫。它們以 % 字元開頭。其餘行是其引數,無需括號或引號傳遞。行魔法可以用作表示式,其返回值可以分配給變數。
單元格魔法
它們具有 %% 字元字首。與行魔法函式不同,它們可以在其呼叫下方操作多行。事實上,它們可以對其接收的輸入進行任意修改,這些輸入甚至根本不必是有效的 Python 程式碼。它們將整個塊作為單個字串接收。
要了解更多關於魔法函式、內建魔法及其文件字串的資訊,請使用魔法命令。特定魔法函式的資訊可以透過 %magicfunction? 命令獲取。現在讓我們描述一些內建的行和單元格魔法命令。
內建行魔法
%autocall [mode]
此魔法函式使函式無需使用括號即可自動呼叫。它接受三個可能的模式引數:0(關閉)、1(智慧)為預設值或2(始終開啟)。
%automagic
如果設定為 1,則無需鍵入初始 % 即可呼叫魔法函式。在沒有引數的情況下,它會切換開啟/關閉。要停用,請設定為 0。
以下示例顯示了一個魔法函式%pwd(顯示當前工作目錄)在 %automagic 設定為 1 時無需前導 % 即可被呼叫
%cd
此行魔法更改當前目錄。此命令會在您的 IPython 會話期間自動維護您訪問的目錄的內部列表,位於變數 _dh 中。您還可以執行“cd -<tab>”以方便地檢視目錄歷史記錄。
用法
可以使用以下方式使用 %cd 命令:
%cd <dir> - 將當前工作目錄更改為 <dir>
%cd.. - 將當前目錄更改為父目錄
%cd - 更改為上次訪問的目錄。
%dhist
此魔法命令列印您在本會話中訪問的所有目錄。每次使用 %cd 命令時,此列表都會在_dh變數中更新。
%edit
此魔法命令呼叫當前作業系統的預設文字編輯器(Windows 的記事本)來編輯 Python 指令碼。指令碼在編輯器關閉時執行。
%env
此魔法命令將列出所有環境變數。它還會讀取特定變數的值或設定環境變數的值。
用法
可以使用以下方式使用 %cd 命令:
%env - 列出所有環境變數
%env var - 獲取 var 的值
%env var val - 設定 var 的值
%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
顯示當前可用的所有魔法函式
%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工具包繪製正弦波:
在使用 Jupyter notebook 時,%matplotlib inline 指令僅在瀏覽器中顯示繪圖輸出。
%notebook
此函式將當前 IPython 歷史記錄轉換為具有 ipynb 副檔名的 IPython 筆記本檔案。前面示例中的輸入單元格儲存為 sine.ipynb
%notebook sine.ipynb
%pinfo
此函式類似於物件自省 ? 字元。要獲取有關物件的資訊,請使用以下命令:
%pinfo object
這與object?或?object同義。
%precision
此魔法函式將浮點結果限制為小數點後指定位數。
%pwd
此魔法函式返回當前工作目錄。
%pylab
此函式使用 matplotlib 和 numpy 庫填充當前 IPython 會話。
%recall
在沒有引數的情況下執行時,此函式將執行上一個命令。
請注意,在%recall n中,前面的數字是輸入單元格編號。因此,將呼叫第 n 個單元格中的命令。您可以透過使用諸如%recall 1-4之類的命令來呼叫單元格部分中的命令。當前輸入單元格將使用呼叫的單元格填充,並且游標將閃爍,直到按下 Enter 鍵。
%run
此命令從 IPython shell 內部執行 Python 指令碼。
%time
此命令顯示 IPython 環境執行 Python 表示式所需的時間。
%timeit
此函式還顯示 IPython 環境執行 Python 表示式所需的時間。Python 語句或表示式的執行時間使用 timeit 模組。此函式可以用作行魔法和單元格魔法,如下所述:
在行模式下,您可以計時單行。
在單元格模式下,第一行中的語句用作設定程式碼,並且單元格的主體將被計時。單元格主體可以訪問在設定程式碼中建立的任何變數。
%who
此行魔法列印所有互動式變數,並進行一些最少的格式化。如果給出任何引數,則僅列印型別與其中一個匹配的變數。
IPython 自定義行魔法函式
IPython 的核心庫包含 register_line_magic 裝飾器。使用此裝飾器,使用者定義的函式將轉換為行魔法函式。