Tôi đang sử dụng Python 2.6.6 và sử dụng pdb để gỡ lỗi chương trình Python của mình, nhưng tôi không rõ ràng về sự khác biệt giữa "tiếp theo" và " cho đến "trong pdb, có vẻ như cả hai người trong số họ sẽ tiếp tục thực hiện cho đến khi dòng tiếp theo trong hàm hiện tại.sự khác biệt giữa "tiếp theo" và "cho đến" trong pdb
Trả lời
Các pdb giúp đỡ doc mô tả nó theo cách này:
(Pdb) help next
n(ext)
Continue execution until the next line in the current function
is reached or it returns.
(Pdb) help until
unt(il)
Continue execution until the line with a number greater than the current
one is reached or until the current frame returns
helpfully hơn, Doug Hellman gives an example in his Python Module Tutorial of the Week minh họa sự khác biệt:
Các cho đến khi lệnh là như sau, ngoại trừ nó tiếp tục một cách rõ ràng cho đến khi thực hiện đạt một dòng trong cùng một hàm có số dòng cao hơn giá trị hiện tại. Điều đó có nghĩa, ví dụ, cho đến khi có thể được sử dụng để bước qua cuối một vòng lặp.
pdb_next.py
import pdb
def calc(i, n):
j = i * n
return j
def f(n):
for i in range(n):
j = calc(i, n)
print i, j
return
if __name__ == '__main__':
pdb.set_trace()
f(5)
$ python pdb_next.py
> .../pdb_next.py(21)<module>()
-> f(5)
(Pdb) step
--Call--
> .../pdb_next.py(13)f()
-> def f(n):
(Pdb) step
> .../pdb_next.py(14)f()
-> for i in range(n):
(Pdb) step
> .../pdb_next.py(15)f()
-> j = calc(i, n)
(Pdb) next
> .../pdb_next.py(16)f()
-> print i, j
(Pdb) until
0 0
1 5
2 10
3 15
4 20
> .../pdb_next.py(17)f()
-> return
(Pdb)
Trước khi đến được chạy, dòng hiện tại là 16, dòng cuối cùng của vòng lặp. Sau khi cho đến khi chạy, thực hiện đã được trên dòng 17, và vòng lặp đã được cạn kiệt.
Mục đích của until
được chia sẻ với các eponymous gdb command:
cho đến khi
Tiếp tục chạy cho đến khi một dòng nguồn quá khứ dòng hiện tại, trong stack frame hiện tại, là đạt. Lệnh này được sử dụng để tránh đơn bước qua một vòng lặp nhiều lần. Nó giống như lệnh tiếp theo, ngoại trừ khi cho đến khi gặp một bước nhảy, nó sẽ tự động tiếp tục thực hiện cho đến khi bộ đếm chương trình lớn hơn địa chỉ của bước nhảy . Điều này có nghĩa là khi bạn đến cuối vòng lặp sau khi bước duy nhất, mặc dù nó cho đến khi chương trình của bạn tiếp tục thực hiện cho đến khi nó thoát khỏi vòng lặp. Ngược lại, lệnh tiếp theo ở cuối vòng lặp chỉ cần quay trở lại phần đầu của vòng lặp, buộc bạn phải thực hiện bước qua bước lặp tiếp theo.
- 1. Eclipse So sánh Editor: sự khác biệt giữa các nút 'khác biệt tiếp theo' và 'thay đổi tiếp theo'?
- 2. Sự khác biệt giữa Mẫu quan sát và Phương pháp tiếp cận theo hướng sự kiện
- 3. sự khác biệt giữa intent.setClass() và intent.setComponent()
- 4. Sự khác biệt giữa SqlDataReader.Read và SqlDataReader.NextResult
- 5. sự khác biệt giữa việc đóng và tiếp tục
- 6. Sự khác biệt giữa tham chiếu chuyển tiếp và *?
- 7. Sự khác biệt giữa Monitor.Pulse và Monitor.PulseAll
- 8. Sự khác biệt giữa $ * và $ @
- 9. Sự khác biệt giữa XmlSerializer và BinaryFormatter
- 10. Sự khác biệt giữa "**/* /" và "** /"?
- 11. Sự khác biệt giữa $ # và $ {# @}
- 12. Sự khác biệt giữa. và #
- 13. Sự khác biệt giữa $ (...) và `...`
- 14. Sự khác biệt giữa = và: =
- 15. Sự khác biệt giữa "phần tiếp theo" và "SQL" là gì?
- 16. Sự khác biệt giữa $ {} và $() trong Bash
- 17. Sự khác biệt giữa ". +" Và ". +?"
- 18. Sự khác biệt giữa! và !! trong yaml?
- 19. Sự khác biệt giữa AXML và XAML?
- 20. Sự khác biệt giữa '.' và "." trong java
- 21. Sự khác biệt giữa. và: trong Lua
- 22. sự khác biệt giữa 'và "trong JavaScript?
- 23. Sự khác biệt giữa $ @ và $! trong perl
- 24. Sự khác biệt giữa Mealy và Moore
- 25. Sự khác biệt giữa Verilog! và ~?
- 26. Sự khác biệt giữa $ .getScript() và $ .get()
- 27. Sự khác biệt giữa hội và DLL
- 28. Sự khác biệt giữa isPresent và isElementPresent
- 29. Sự khác biệt giữa getApplicationContext và classname.this
- 30. Sự khác biệt giữa vm.dirty_ratio và vm.dirty_background_ratio?