2011-07-16 42 views
17

在最近的MATLAB版本中,可以使用Ctrl-Enter%%開始的兩行之間執行代碼區域。這個區域被稱爲code cell,它允許快速的代碼測試和調試。Python編輯器中的單元模式

例如

%% This is the beginning of the 1st cell 

a = 5;  

%% This is the end of the 1st cell and beginning of the 2nd cell 

% This is just a comment 
b = 6; 

%% This is the end of the 2nd cell 

是否有任何支持類似功能的python編輯器?

編輯:我剛發現Spyderlib支持「塊」執行與F9(用空行分隔代碼區),但作爲this thread提到,此功能仍然不是非常健壯的(特別是在與環結合) 。

+0

有趣的問題(+1)...我很好奇,但這有用嗎?在交互式shell和unittest + doctest moudules之間,我想不出「單元」會提供額外功能的情況。我從來沒有在其他語言中使用過「單元格模式」,所以我的問題是一個誠實的問題,而不是一種說不出來的說法。 :) – mac

+0

我沒有使用'unittest'和'doctest'(我會看看他們)。 MATLAB中的「單元模式」非常有用,因爲它允許您在編輯時評估代碼,只需按下「Ctrl + Enter」即可。遊標的位置決定了哪些單元(代碼行)被髮送給解釋器,並且變量的狀態在單元格評估之間保持不變。換句話說,單元格的使用允許您通過將行分組爲「功能性」塊來非常有機地增長和測試代碼。 –

回答

6

交互式編輯器用於Python IEP具有Matlab的風格細胞符號來標記代碼段(通過啓動與「##」的線),默認情況下快捷也Ctrl鍵 + 輸入

## Cell one 
""" 
A cell is everything between two commands starting with '##' 
""" 
a = 3 
b = 4 
print('The answer is ' + str(a+b)) 

## Cell two 

print('Hello World') 
+1

+1不錯的發現。這甚至出現在首頁的功能列表中。 –

+0

@AndréCaron:我之前使用過這個IDE,但從來不知道這個功能到現在爲止 – Amro

+0

感謝@Amro,這是我在Python編輯器中看到的類似於MATLAB的單元格中最接近的實現。 [Spyderlib](http://code.google.com/p/spyderlib/)依賴空白行來定義[顯然](http://code.google.com/p/spyderlib/issues/detail ?id = 117)不是很健壯。 –

1

Pyscripter支持塊執行。但它只是贏。它僅限於選擇代碼塊 - >運行它(Ctrl + F7)。沒有細胞的概念。

0

Sage提供這樣的東西。它的意思是一個替代Matlab的Python,你應該看看。

在sage筆記本中,您可以在與matlab的單元格非常相似的塊中編寫python命令。

1

IDLE與IdleX支持使用SubCodes的類似Matlab和Sage的單元格。 '##'標記之間的代碼可以使用Ctrl + Return來執行。它還允許縮進標記,以便可以執行縮進代碼。

1

我寫了一個vim插件,其中單元格由##分隔。它將單元發送到在tmux中運行的ipython解釋器。您可以定義鍵映射到執行當前單元格,執行當前單元格並移動到下一個或執行當前行:

https://github.com/julienr/vim-cellmode

最近,我開始了類似插件的IntelliJ PyCharm工作。它可在細胞發送給內部蟒控制檯(其具有一些問題與圖)或在TMUX運行IPython的解釋:

https://github.com/julienr/pycharm-cellmode

2

的Spyder3的小區定義爲開始#%%線之間的所有代碼。

運行與按Ctrl +一個單元格中輸入,或運行一個單元格,事先與 + 輸入

+0

https://pythonhosted.org/spyder/editor.html#how-to-define-a-code-cell – matth