Jupyter 简明教程

IPython - Magic Commands

与标准 Python 外壳相比,魔术命令或魔术函数是 IPython 提供的重要增强功能之一。这些魔术命令旨在使用 Python 来解决数据分析中的常见问题。事实上,它们控制着 IPython 本身的行为。

当 Python 语法不是最自然时,魔术命令可作为方便的功能。它们可用于在其工作流程中嵌入无效 Python 语法。

Types of Magic Commands

魔术命令有两种类型 −

  1. Line magics

  2. Cell magics

Line Magics

它们类似于命令行调用。它们以 % 字符开头。该行的其余部分是其在没有括号或引号的情况下传递的参数。行魔术可作为表达式使用,其返回值可被分配给变量。

Cell Magics

它们有一个 %% 字符前缀。与行魔术函数不同,它们可以在其调用下方的多行中操作。事实上,它们可以对其接收的输入进行任意修改,而输入甚至不必是有效的 Python 代码。它们将整个块作为单个字符串接收。

要了解有关魔术函数、内置魔术及其文档字符串的更多信息,请使用魔术命令。特定魔术函数的信息可通过 % magicfunction? 命令获取。让我们现在描述一些内置行和单元格魔术命令。

Built-in line magics

%autocall [mode]

此魔术函数可以自动调用函数,而无需使用括号。它需要三个可能的模式参数: 0 (off), 1 (smart) is default2 (always on)

built in line magics

%automagic

如果设置为 1,则魔术函数在无需输入初始 % 的情况下可变为可调用。没有参数时,它会切换开/关。要停用,请设置为 0。

以下示例显示了在将 %automagic 设置为 1 时,调用了不带前导 % 的魔术函数 %pwd (显示当前工作目录)

automagic

%cd

该行魔术改变了当前目录。该命令会在 IPython 会话期间自动维护您访问的一个内部目录列表,并在变量 _dh 中。您还可以执行 ‘cd -<tab>’ 来方便地查看目录历史记录。

cd

Usage

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

  1. %cd &lt;dir&gt; − 将当前工作目录更改为 <dir>

  2. %cd.. − 将当前目录更改为父目录

  3. %cd − 更改为上次访问的目录。

%dhist

该魔术命令会打印您在当前会话中访问过的所有目录。每当使用 %cd 命令时,此列表都会在 _dh 变量中更新。

dhist

%edit

该魔术命令会调用当前操作系统(Windows 的记事本)的默认文本编辑器来编辑 Python 脚本。脚本在关闭编辑器后执行。

%env

该魔术命令将列出所有环境变量。它还会读取特定变量的值或设置环境变量的值。

Usage

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

  1. %env − 列出所有环境变量

  2. %env var − 获取变量的值

  3. %env var val − 设置变量的值

env

%gui [GUINAME]

当不带参数使用该命令时,它将启用或禁用 IPython GUI 事件循环集成。通过 GUINAME 参数,该魔术可以将默认 GUI 工具包替换为指定的一个。

Sr.No.

Command & Description

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

(requires %matplotlib 1.1)

9

%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 notebook 文件。上一个示例中的输入单元格保存为 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 之类的命令来调用部分单元格中的命令。当前输入单元格由调用的单元格填充,并且光标闪烁,直至按下回车键。

recall

%run

此命令从 IPython shell 运行 Python 脚本。

run

%time

此命令显示 IPython 环境执行 Python 表达式所需的时间。

time

%timeit

此函数还显示 IPython 环境执行 Python 表达式所需的时间。Python 语句或表达式的执行时间使用 timeit 模块。此函数可同时用作行魔术和单元格魔术,如下所述 −

  1. line mode 中,您可以对单行进行计时。

  2. cell mode 中,第一行的语句用作设置代码,并且对单元格的主体进行计时。单元格主体可以访问设置代码中创建的任何变量。

%who

这种行魔术打印所有交互变量,并带有一些最少格式。如果给出任何参数,则仅打印类型与其中之一匹配的变量。

who

IPython Custom Line Magic function

IPython 的核心库包含 register_line_magic 装饰器。用户自定义函数使用此装饰器转换成行魔术函数。

ipython line magic function