- 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 装饰器。使用此装饰器,用户定义的函数将转换为行魔法函数。