2011-09-30 19 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 –