Jupyter IPython 魔法命令
与标准的Python shell相比,魔法命令或魔法函数是IPython提供的重要增强功能之一。这些神奇的命令是为了解决使用Python进行数据分析时的常见问题。事实上,它们控制着IPython本身的行为。
在Python的语法不是最自然的情况下,魔法命令充当了方便的功能。它们对于在工作流程中嵌入无效的Python语法非常有用。
魔法命令的类型
有两种类型的魔法命令 –
- 行魔法
- 单元魔法
行魔法
它们类似于命令行调用。它们以%字符开始。该行的其余部分是它的参数,没有括号或引号。行魔法可以作为表达式使用,其返回值可以被分配给变量。
单元格魔法
它们有 %% 字符前缀。与行魔法函数不同,它们可以在其调用下的多行上操作。事实上,它们可以对收到的输入进行任意修改,甚至不需要是有效的 Python 代码。它们接收的是作为一个单一字符串的整个块。
要了解更多关于魔法函数、内置魔法和它们的文档,请使用魔法命令。特定魔法函数的信息可以通过% magicfunction? 命令获得。现在让我们来描述一些内置的行和单元格魔法命令。
内置的行魔法
%autocall [mode]
这个神奇的函数使一个函数可以自动调用,而不需要使用括号。它需要三种可能的模式参数: 0(关闭),1(智能)是默认的 或 2(总是打开)。
%automagic
如果设置为1,魔法函数可被调用,而不需要输入初始的%。如果没有参数,它就会切换为开/关。要停用,请设置为0。
下面的例子显示了当%automagic设置为1时,魔法函数 %pwd (显示目前的工作目录)被调用,而不需要打头的%。
%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工具包替换默认的GUI工具包。
编号:Sr.No. | 命令和描述 |
---|---|
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笔记本时,%matplotlib内联指令只在浏览器中显示绘图输出。
%notebook
该函数将当前的IPython历史转换为IPython笔记本文件,扩展名为ipynb。前面例子中的输入单元被保存为sine.ipynb
%notebook sine.ipynb
%pinfo
这个函数类似于对象的自省 ? 字符。To obtain information about an object, use the following command −
%pinfo object
这是 对象 的同义词,或者说是 对象。
%precision
这个神奇的函数将浮点结果限制为小数点后的指定数字。
%pwd
这个神奇的函数返回当前的工作目录。
%pylab
这个函数用matplotlib和numpy库来填充当前IPython会话。
%recall
当执行时没有任何参数,该函数执行之前的命令。
注意,在 %recall n 中,前面的数字是输入单元的编号。因此,第n个单元格的命令被调用。你可以通过使用 %recall 1-4 这样的命令来调用部分单元格中的命令。当前的输入单元会被填充到被调用的单元中,光标会闪烁,直到按下回车键。
%run
该命令从IPython shell中运行一个Python脚本。
%time
该命令显示IPython环境执行一个Python表达式所需的时间。
%timeit
这个函数也显示IPython环境执行一个Python表达式所需的时间。Python语句或表达式的执行时间使用timeit模块。这个函数可以作为行和单元格魔法使用,这里解释一下–
- 在 行模式 下,你可以为一个单行计时。
-
在 单元格模式 下,第一行的语句被用作设置代码,单元格的主体被计时。单元主体可以访问设置代码中创建的任何变量。
%who
这一行神奇地打印出所有的交互式变量,并有一些最小的格式化。如果给了任何参数,只有类型与这些参数之一相匹配的变量才会被打印。
IPython自定义行魔法函数
IPython的核心库包含register_line_magic装饰器。使用这个装饰器可以将一个用户定义的函数转换为一个行魔法函数。