IPython:使用魔术功能的Alias

tim*_*tim 3 alias ipython ipython-magic

我找不到任何关于此的内容所以我在这里问:我想在IPython中创建一个别名,它本身使用IPython-magic-function.

这意味着:我经常需要重新输入

%run process.py
Run Code Online (Sandbox Code Playgroud)

因此我想创建一个这样的别名:

%alias rp %run process.py
Run Code Online (Sandbox Code Playgroud)

创造有效,但在调用时rp,它说,%run找不到命令.关于如何做到这一点的任何想法?

Gui*_*hin 5

试试这个:

进入IPython控制台时,键入 %run process.py

然后你可以使用%macro魔法绑定rp%run process.py.

这样做是为了In存储输入.

%run process.py
%macro rp In[-2]
Run Code Online (Sandbox Code Playgroud)

应该管用!


%macro也可以使用语法覆盖一系列输入%macro name range- 其中range可以是整数或整数形式的整数.

例如,如果您想使用单个命令计时两个函数,则可以指定行范围.

定义功能:

In[20]: def foo(x): return x
In[21]: def bar(x): return x*x
Run Code Online (Sandbox Code Playgroud)

时间功能:

In[22]: %timeit foo(100)
10000000 loops, best of 3: 137 ns per loop
In[23]: %timeit bar(100)
10000000 loops, best of 3: 194 ns per loop
Run Code Online (Sandbox Code Playgroud)

将宏绑定到名称time_fb:

In[24]: %macro time_fb 22-23
Run Code Online (Sandbox Code Playgroud)

宏绑定:

Macro `time_fb` created. To execute, type its name (without quotes).
=== Macro contents: ===
get_ipython().magic('timeit foo(100)')
get_ipython().magic('timeit bar(100)')
Run Code Online (Sandbox Code Playgroud)

检查它是否有效:

In[25]: time_fb
10000000 loops, best of 3: 135 ns per loop
10000000 loops, best of 3: 192 ns per loop
Run Code Online (Sandbox Code Playgroud)