2011-09-30 20 views

回答

4

您可以从行创建一个名为宏,并执行它们:

%macro foo 32-38 
foo 

这是有用的,如果你要执行同一组线不止一次。另外,行不必是连续的或顺序:

%macro bar 38 37 32-36 42 
+4

在新版本的IPython中,如果你想在运行前调整它们,你也可以直接运行'%rerun 32-38'或者'%recall 32-38'。 –

+0

如果你创建一个宏,它是否会在ipython会话中持续存在? –

11

我用列表表示:

exec In[34:36] 

另外,如果你使用编辑功能编辑块时,输出列表会有你的代码,所以:

exec Out[35] 

我最喜欢的:

edit In[34:38] 

因为我是一个胖手指的懒汉,在第一次尝试时很少能够正确使用它。

+2

我试过你的建议,从历史中编辑代码。对我来说(ipython 0.12),你的语法只能用于**单个**输入行:'编辑In [13]'。它总是在多条输入线上失败:'编辑在[34:38]'。相反,“编辑34-38”。 –

+0

唉!还没有尝试过这一段时间,(显然)与iPython 0.13有同样的问题......感谢大家了! – dreynold

+0

任何人提供更新?这个网页上的提示没有为我工作。我在Python 2.7上使用iPython 3.0.0。 – kakyo

2

你可以像这样执行它们之前编辑线:

edit 1-5 

显然语法在从dreynold的答案使用列表标记某些点发生变化。

8

您可以使用%recall执行之前会话中的代码。请参阅%recall文档here

#Execute all code from previous session. 
%recall ~1/ 

#Execute all code from two sessions previous the current session. 
%recall ~2/ 

#Execute lines 1 to 5 from previous session. 
%recall ~1/1-5 
+0

该语法对我无效。 IPython的== 5.1.0 –