IPython - 魔法命令


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

魔术命令充当方便的函数,而 Python 语法不是最自然的语法。它们对于在工作流程中嵌入无效的 python 语法非常有用。

魔法命令的类型

有两种类型的魔法命令 -

  • 线条魔法
  • 细胞魔法

线条魔术

它们类似于命令行调用。它们以 % 字符开头。该行的其余部分是不带括号或引号传递的参数。线条魔术可以用作表达式,并且它们的返回值可以分配给变量。

细胞魔法

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

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

内置线条魔法

%autocall [mode]

这个神奇的函数使函数可以自动调用,而无需使用括号。它采用三个可能的模式参数:0(关闭)、默认值 1(智能)2(始终打开)

内置线路魔法

%自动魔法

如果设置为 1,魔术函数无需输入初始 % 即可调用。如果没有参数,它会打开/关闭。要停用,请设置为 0。

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

%自动魔法

%光盘

这行魔法改变了当前目录。此命令会自动在变量 _dh 中维护您在 IPython 会话期间访问的目录的内部列表。您还可以执行“cd -<tab>”来方便地查看目录历史记录。

%光盘

用法

%cd 命令可以通过以下方式使用 -

  • %cd <dir> - 将当前工作目录更改为 <dir>

  • %cd.. - 将当前目录更改为父目录

  • %cd - 更改为上次访问的目录。

%dhist

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

%dhist

%编辑

这个神奇的命令调用当前操作系统的默认文本编辑器(Windows 的记事本)来编辑 Python 脚本。该脚本在编辑器关闭时执行。

%env

这个神奇的命令将列出所有环境变量。它还读取特定变量的值或设置环境变量的值。

用法

%cd 命令可以通过以下方式使用 -

  • %env - 列出所有环境变量

  • %env var - 获取 var 的值

  • %env var val - 设置 var 的值

%env

%gui [用户名]

当不带参数使用时,此命令启用或禁用 IPython GUI 事件循环集成。使用 GUINAME 参数,这一魔法将默认的 GUI 工具包替换为指定的工具包。

先生。 命令与说明
1

%guiwx

启用 wxPython 事件循环集成

2

%gui qt4|qt

启用 PyQt4 事件循环集成

3

%gui qt5

启用 PyQt5 事件循环集成

4

%guigtk

启用 PyGTK 事件循环集成

5

%guigtk3

启用 Gtk3 事件循环集成

6

%gui tk

启用 Tk 事件循环集成

7

%gui 操作系统

启用 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 内联指令仅在浏览器中显示绘图输出。

%笔记本

此函数将当前 IPython 历史记录转换为扩展名为 ipynb 的 IPython 笔记本文件。上一示例中的输入单元格保存为 sine.ipynb

%notebook sine.ipynb

%个人信息

这个功能类似于对象内省?特点。要获取有关对象的信息,请使用以下命令 -

%pinfo object

这是反对的同义词吗??对象

%精确

这个神奇的函数将浮点结果限制为小数点后的指定数字。

%精确

%密码

这个神奇的函数返回当前的工作目录。

%密码

%pylab

此函数使用 matplotlib 和 numpy 库填充当前 IPython 会话。

%pylab

%记起

当不带任何参数执行时,该函数执行先前的命令。

请注意,在%recall n中,前面的数字是输入单元格编号。因此,第 n 个单元格中的命令被调用。您可以使用%recall 1-4等命令来调用单元格部分中的命令。当前输入单元格填充有调用的单元格,并且光标闪烁直到按下回车键。

%记起

%跑步

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

%跑步

%时间

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

%时间

%时间

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

  • 在行模式下,您可以为单行计时。

  • 单元模式下,第一行中的语句用作设置代码,并对单元的主体进行计时。单元体可以访问在设置代码中创建的任何变量。

%WHO

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

%WHO

IPython 自定义线条魔术函数

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

IPython 自定义线条魔术函数