在 Python 3 中运行此代码后:
import pdb
def foo():
nums = [1, 2, 3]
a = 5
pdb.set_trace()
foo()
以下表达式有效:
(Pdb) print(nums)
[1, 2, 3]
(Pdb) print(a)
5
(Pdb) [x for x in nums]
[1, 2, 3]
但以下表达式失败:
(Pdb) [x*a for x in nums]
*** NameError: global name 'a' is not defined
以上在 Python 2.7 中运行良好。
这是一个错误还是我遗漏了什么?
更新:查看新接受的答案。这确实是一个错误(或有问题的设计),现在已通过在 pdb 中引入新的命令和模式来解决。
最佳答案
如果您在 [i]pdb session 中键入 interact
,您将获得一个交互式 session ,并且列表推导在此模式下会按预期工作
关于python - 使用列表生成器时 Python 3 中的 pdb 模块中可能存在错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17290314/