IPython魔术命令
魔术命令或魔术函数是IPython与标准Python shell相比提供的重要增强功能之一。这些魔术命令旨在解决使用Python进行数据分析中的常见问题。实际上,它们控制着IPython本身的行为。
在Python语法不是最自然的语法中,魔术命令充当了方便的功能。它们对于在工作流程中嵌入无效的python语法很有用。
魔术命令的类型
魔术命令有两种类型:
- 线魔术
- 细胞魔法
Line Magics
它们类似于命令行调用。它们以%字符开头。该行的其余部分是传递的参数,不带括号或引号。线魔术可以用作表达式,其返回值可以分配给变量。
细胞魔法
它们具有%%字符前缀。与线路魔术函数不同,它们可以在呼叫下方的多条线路上进行操作。实际上,他们可以对收到的输入进行任意修改,甚至根本不需要是有效的Python代码。他们将整个块作为单个字符串接收。
要了解有关魔术函数,内置魔术及其文档字符串的更多信息,请使用magic命令。特定魔术功能的信息是通过% magicfunction?命令获得的。现在让我们描述一些内置的line和cell magic命令。
内置线魔术
# Filename : example.py # Copyright : 2020 By aizws # Author by : www.aizws.net # Date : 2020-08-28 %autocall [mode]
此魔术函数使函数可以自动调用,而不必使用括号。它需要三个可能的模式参数: 0(关闭),默认值为1(智能)或 2(始终打开)。
%automagic
如果设置为1,则可以调用魔术函数而不必键入初始%。不带参数的情况下,它可以打开/关闭。要停用,请设置为0。
下面的示例显示了一个魔术函数 %pwd (显示当前工作目录),当%automagic设置为1时,该函数在不带%的情况下被调用
%cd
此行魔术更改了当前目录。该命令自动在变量_dh中维护您在IPython会话期间访问的目录的内部列表。您也可以执行" cd- "来方便地查看目录历史记录。
用法
%cd命令可以通过以下方式使用:
- %cd -将当前工作目录更改为
- %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后端。您可以看到可用后端的列表,如下所示::
# Filename : example.py # Copyright : 2020 By aizws # Author by : www.aizws.net # Date : 2020-08-28 in [4]: %matplotlib --list Available matplotlib backends: ['osx', 'qt4', 'qt5', 'gtk3', 'notebook', 'wx', 'qt', 'nbagg','gtk', 'tk', 'inline']
此处显示的IPython会话使用 qt 工具包绘制了一个正弦波:
使用Jupyter笔记本时,%matplotlib内联指令仅在浏览器中显示打印输出。
%notebook
此函数将当前IPython历史记录转换为带有ipynb扩展名的IPython Notebook文件。上例中的输入单元格另存为sine.ipynb
# Filename : example.py # Copyright : 2020 By aizws # Author by : www.aizws.net # Date : 2020-08-28 %notebook sine.ipynb
%pinfo
此功能类似于对象自省吗?字符。要获取有关对象的信息,请使用以下命令:
# Filename : example.py # Copyright : 2020 By aizws # Author by : www.aizws.net # Date : 2020-08-28 %pinfo object
这是 object?或 ?object 的同义词。
%precision
此魔术函数将浮点结果限制为十进制后的指定数字。
%pwd
此魔术函数返回当前的工作目录。
%pylab
此函数使用matplotlib和numpy库填充当前的IPython会话。
%召回
不带任何参数执行时,此函数将执行上一条命令。
请注意,在 %recall n 中,其前面的数字是输入的单元格编号。因此,第n个单元中的命令被调出。您可以使用诸如 %recall 1-4 之类的命令来调用单元格区域中的命令。当前输入的单元格中已填充已调用的单元格,并且光标闪烁,直到按下Enter键。
%run
此命令从IPython Shell中运行Python脚本。
%time
此命令显示IPython环境执行Python表达式所需的时间。
%timeit
此函数还显示IPython环境执行Python表达式所需的时间。 Python语句或表达式的时间执行使用timeit模块。此功能既可以用作行魔术,也可以用作单元魔术,如此处所解释:
- 在线路模式下,您可以为单行计时。
- 在单元格模式中,第一行中的语句用作设置代码,并对单元格的主体进行计时。单元主体可以访问在设置代码中创建的任何变量。
%谁
此行魔术符以最小的格式打印所有交互式变量。如果给出任何参数,则仅打印类型与其中之一匹配的变量。
IPython自定义行魔术功能
IPython的核心库包含register_line_magic装饰器。使用此装饰器将用户定义的函数转换为换行符函数。
下一章:Jupyter 项目
Jupyter项目于2014年从IPython项目中衍生出来。IPython的与语言无关的功能以Jupyter的名称移动。该名称是对Jupyter支持的核心编程语言的引用,Jupyter项目下的Julia,Python ...