2011-08-15 30 views

Trả lời

12

Bạn có đầy đủ sức mạnh của người phiên dịch trong tầm tay của bạn với pdb, sử dụng

import pdb 
pdb.set_trace() 

Từ đó bạn có thể xác định và tạo các đối tượng mới, xác định lại hiện những cái, sửa đổi và tải lại các mô-đun, v.v. Cú pháp là simalar thành gdb. Nếu bạn đang sử dụng ipython, ipdb có thể là lựa chọn đẹp hơn hoặc bạn có thể tự động gọi trình gỡ rối với hàm ma thuật ipython %debug.

+0

Câu trả lời hay, nhưng tôi khuyên bạn nên sử dụng pdb thông qua IPython, làm cho nó mạnh hơn (đánh dấu cú pháp, tự động gỡ lỗi về ngoại lệ, v.v.) (http://ipython.org/ipython-doc/stable/interactive /tutorial.html#debugging). – EOL

1

Bạn có thể đặt giá trị mới cho tên, nhưng vẫn có thể có các địa điểm tham chiếu đến giá trị cũ. Kiểm tra phiên dưới đây vào vỏ python:

>>> def foo(): print 'Foo' 
... 
>>> bar = foo 
>>> 
>>> foo() 
Foo 
>>> bar() 
Foo 
>>> 
>>> def foo(): print 'Bar' 
... 
>>> foo() 
Bar 
>>> bar() 
Foo 
>>> 
>>> def call(): foo() 
... 
>>> call() 
Bar 
>>> 
>>> 
>>> def foo(): print 'Foo reloaded!' 
... 
>>> 
>>> foo() 
Foo reloaded! 
>>> bar() 
Foo 
>>> 
>>> call() 
Foo reloaded! 
>>> 

Chức năng call đề cập đến mới foo, nhưng bar được gán giá trị của cái cũ foo và điều đó không thay đổi khi bạn sử dụng lại tên foo.

Bạn có yêu cầu hỗ trợ biên tập viên không? Python-mode in Emacs có thể chạy "quá trình python kém" mà bạn có thể gửi các khối mã khi bạn chơi với chúng. Hoặc bạn có thể làm điều này trực tiếp trong trình bao Python, như được hiển thị ở trên.

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