2011-07-16 30 views
17

Trong các phiên bản gần đây của MATLAB, người ta có thể thực thi một vùng mã giữa hai dòng bắt đầu bằng %% sử dụng Ctrl-Enter. Vùng này được gọi là code cell và cho phép kiểm tra và gỡ lỗi mã nhanh.Chế độ di động trong trình soạn thảo Python

Ví dụ:

%% 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 

Có trình chỉnh sửa python nào hỗ trợ tính năng tương tự không?

EDIT: Tôi chỉ thấy rằng Spyderlib hỗ trợ "khối" thực hiện (các khu vực đang ly thân với dòng trống) với F9, nhưng như this thread đề cập, tính năng này vẫn không phải là rất mạnh mẽ (đặc biệt là khi kết hợp với các vòng lặp) .

+0

Câu hỏi thú vị (+1) ... Tôi rất tò mò: điều này hữu ích cho điều gì? Giữa trình bao tương tác và các moudules không xác định + doctest, tôi không thể nghĩ ra một tình huống trong đó "các ô" sẽ cung cấp chức năng bổ sung.Tôi không bao giờ sử dụng "chế độ tế bào" trong các ngôn ngữ khác, vì vậy, tôi là một câu hỏi trung thực, không phải là một cách phức tạp để nói "nó không hữu ích"! :) – mac

+0

Tôi chưa sử dụng 'unittest' hay' doctest' (tôi sẽ xem xét chúng). 'Cell mode' trong MATLAB rất hữu ích vì nó cho phép bạn đánh giá mã trong khi chỉnh sửa nó bằng cách chỉ cần nhấn 'Ctrl + Enter' bất cứ lúc nào. Vị trí của con trỏ xác định ô nào (các dòng mã) được gửi tới trình thông dịch và trạng thái của các biến được giữ giữa các đánh giá ô. Nói cách khác, việc sử dụng các ô cho phép bạn phát triển và kiểm tra mã của bạn rất hữu cơ bằng cách nhóm các dòng thành các khối 'chức năng'. –

Trả lời

6

Các biên tập viên Interactive cho Python IEP có một ký hiệu tế bào Matlab kiểu để đánh dấu đoạn mã (bằng cách bắt đầu một dòng với '##'), và các phím tắt theo mặc định cũng là Ctrl +Nhập:

## 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 tìm kiếm thú vị. Điều này thậm chí xuất hiện trong danh sách các tính năng trên trang đầu. –

+0

@ AndréCaron: Tôi đã sử dụng IDE này trước đây, nhưng chưa bao giờ biết tính năng này tồn tại cho đến bây giờ – Amro

+0

Cảm ơn @Amro, đây là triển khai gần nhất mà tôi đã thấy của một ô giống MATLAB trong trình soạn thảo Python. [Spyderlib] (http://code.google.com/p/spyderlib/) dựa trên các dòng trống để định nghĩa các khối mà [rõ ràng] (http://code.google.com/p/spyderlib/issues/detail ? id = 117) không phải là rất mạnh mẽ. –

1

Pyscripter hỗ trợ thực thi khối. Nhưng đó là Win chỉ. Và nó được giới hạn để chọn khối mã -> chạy nó (Ctrl + F7). Không có khái niệm về các tế bào.

0

Sage cung cấp nội dung như thế này. Nó có nghĩa là để được một con trăn thay thế cho Matlab, bạn nên có một cái nhìn.

Trong sổ ghi chép hiền, bạn viết lệnh python trong các khối tương tự với ô của MATLAB.

1

IDLE with IdleX có hỗ trợ cho các ô giống như Matlab và Sage sử dụng SubCodes. Mã ở giữa các dấu '##' có thể được thực hiện bằng Ctrl + Return. Nó cũng cho phép đánh dấu thụt lề để mã thụt lề có thể được thực thi.

1

Tôi đã viết một plugin vim trong đó các ô được phân cách bởi ##. Nó gửi các ô đến một trình thông dịch ipython đang chạy trong tmux. Bạn có thể định nghĩa các ánh xạ chìa khóa để thực hiện các tế bào hiện nay, thực hiện ô hiện tại và chuyển sang tiếp theo hoặc thực thi các dòng hiện tại:

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

Gần đây tôi bắt đầu làm việc trên một plugin tương tự cho Intellij PyCharm. Nó có thể gửi các tế bào cho một trong hai giao diện điều khiển nội bộ python (trong đó có một số vấn đề với lô) hoặc một thông dịch viên ipython chạy trong tmux:

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

2

Spyder3 định nghĩa một tế bào như tất cả các mã giữa các dòng bắt đầu với #%%.

Run phòng giam với Ctrl +Nhập, hoặc chạy một tế bào và trước với phím Shift +Nhập.

+0

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

Các vấn đề liên quan