2012-08-03 26 views
9

Tôi cần chạy tập lệnh Python như thường lệ, nhưng tôi muốn dừng thực thi trên một dòng cụ thể và bắt đầu chế độ tương tác.bắt đầu chế độ tương tác trên một dòng lệnh cụ thể

Nói cách khác, tôi muốn có thể kiểm tra giá trị của tất cả các biến của tôi tại thời điểm đó và tiếp tục từ đó trên dòng lệnh của python.

Tôi làm cách nào để thực hiện việc này?

+0

Chế độ gỡ lỗi A.k.a? –

+0

Nếu chế độ gỡ lỗi là những gì tôi mô tả ở trên, thì có! –

+0

Miễn là bạn đang cố gắng để gỡ lỗi mã của bạn, các phương pháp trong câu trả lời là cách bạn nên đi. Nếu bạn thực sự cần loại chức năng này với tư cách là người dùng chứ không phải là nhà phát triển tập lệnh, bạn nên tìm cách nhập dữ liệu người dùng trong khi thực thi tập lệnh hoặc tổ chức lại mã của bạn thành các hàm, phương thức và mô-đun. –

Trả lời

16

Điều này có thể được thực hiện với mô-đun code. Cách dễ nhất là gọi code.interact().

+0

Bạn có chắc chắn không? Nó chỉ trông giống như nó mở ra một vỏ python, và đó là nó. Tôi không thể tra cứu bất kỳ biến nào mà tôi đã định nghĩa trước 'code.interact()' trong mã của tôi, vì vậy tôi không thực sự thấy cách sử dụng hàm này. –

+3

@Ricky Bạn phải sử dụng đối số 'local':' code.interact (local = locals()) '. –

+1

@ lazyr thực sự, đó là 'code.interact (local = locals())' :-) – sloth

9

Sử dụng trình gỡ lỗi và thêm điểm ngắt. Bạn có sử dụng một IDE không? Tất cả các IDE chính đều có hỗ trợ trình gỡ lỗi. Từ CLI, bạn có thể sử dụng pdb.

+4

'nhập pdb; pdb.set_trace() 'sẽ thực hiện thủ thuật. –

4

Không chính xác những gì bạn đang tìm kiếm, nhưng bạn có thể dễ dàng có chương trình của bạn phá vỡ ra pdb (debugger Python) bằng cách thêm dòng này bất cứ nơi nào bạn muốn chương trình của bạn để thoát ra khỏi:

import pdb; pdb.set_trace() 

Bạn sau đó có thể dễ dàng kiểm tra các biến như thế này:

p variable_name 

Bạn cũng có thể bước, tiếp tục, vv

xem chi tiết trên pdb here.

2

Trừ khi bạn cần điều này cho các mục đích sản xuất là cách tốt nhất, theo ý kiến ​​của tôi, là sử dụng trình gỡ lỗi tương tác:

http://infohost.nmt.edu/tcc/help/pubs/python/web/pdb.html

http://onlamp.com/pub/a/python/2005/09/01/debugger.html

cho các mục đích khác xem xét có thể làm các khía cạnh trên mã của bạn, sử dụng trang trí để có các đặc điểm thời gian chạy từ lớp phương thức:

http://www.cs.tut.fi/~ask/aspects/index.shtml

http://www.linuxtopia.org/online_books/programming_books/python_programming/python_ch26.html

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