📜  IPython-魔术命令

📅  最后修改于: 2020-11-08 07:05:57             🧑  作者: Mango


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

魔术命令充当便捷功能,而Python语法并不是最自然的一种。它们对于在工作流程中嵌入无效的Python语法很有用。

魔术命令的类型

魔术命令有两种类型-

  • 线魔术
  • 细胞魔法

线魔术

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

细胞魔法

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

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

内置线魔术

%autocall [mode]

该魔术函数使函数自动调用,而不必使用括号。它需要三个可能的模式参数: 0(关闭),默认值为1(智能)2(始终打开)

内置线魔术

%自动

如果设置为1,则可以调用Magic函数,而无需键入初始%。不带参数的情况下,它可以打开/关闭。要停用,请设置为0。

下面的示例显示了当%automagic设置为1时,魔术函数%pwd (显示当前工作目录)被调用而没有前导%

%自动

%光盘

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

%光盘

用法

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

  • %cd

    -将当前工作目录更改为

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

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

%dhist

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

%dhist

%编辑

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

%env

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

用法

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

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

  • %env var-获取var的值

  • %env var val-设置var的值

%env

%gui [GUINAME]

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

Sr.No. Command & Description
1

%gui wx

enable wxPython event loop integration

2

%gui qt4|qt

enable PyQt4 event loop integration

3

%gui qt5

enable PyQt5 event loop integration

4

%gui gtk

enable PyGTK event loop integration

5

%gui gtk3

enable Gtk3 event loop integration

6

%gui tk

enable Tk event loop integration

7

%gui osx

enable Cocoa event loop integration

8

(requires %matplotlib 1.1)

9

%gui

disable all event loop integration

%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笔记本时,%matplotlib内联指令仅在浏览器中显示打印输出。

%笔记本

该函数将当前的IPython历史记录转换为带有ipynb扩展名的IPython Notebook文件。上例中的输入单元格另存为sine.ipynb

%notebook sine.ipynb

%pinfo

此函数类似于对象自省吗?字符。要获取有关对象的信息,请使用以下命令-

%pinfo object

这是对象的代名词吗??object

%精确

此魔术函数将浮点结果限制为十进制后的指定数字。

%精确

%pwd

这个魔术函数返回当前的工作目录。

%pwd

%pylab

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

%pylab

%召回

在不带任何参数的情况下执行时,此函数执行上一个命令。

请注意,在%recall n中,其前面的数字是输入单元格编号。因此,第n个单元中的命令被调出。您可以使用诸如%recall 1-4之类的命令来调用单元格区域中的命令。当前输入的单元格将填充有被调用的单元格,并且光标闪烁,直到按下Enter键。

%召回

%跑

该命令从IPython Shell中运行Python脚本。

%跑

%时间

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

%时间

%timeit

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

  • 线路模式下,您可以为单条线路计时。

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

%WHO

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

%WHO

IPython自定义线魔术函数

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

IPython自定义线魔术功能