在Python中查看变量

Dig*_*ard 5 python debugging

有没有办法在程序运行时查看python中所有变量的列表而不设置断点?打印过于混乱,因为我有很多不断变化的变量.

谢谢

wal*_*mat 5

也许inspect可以帮助你,但你必须过滤信息.

用法如下:

> import inspect
> a = 5
> f = inspect.currentframe()
> print f.f_locals
...
...
'a': 5
...
Run Code Online (Sandbox Code Playgroud)

也许值得一提的是,你不能在循环中迭代结果字典,for因为对变量的赋值会改变该字典.你必须只对密钥进行迭代(至少这是我刚刚发现的).

例:

for v in f.f_locals.keys():
    if not v.startswith("_"):
        print v
Run Code Online (Sandbox Code Playgroud)

看第一行:简单写作for v in f.f_locals不会成功.

  • 你必须只迭代键是不完全正确的.关键是`keys()`迭代字典以构建列表**并在它被分配给`v`**之前完成.这意味着只有`dict(f.f_locals.keys())`如果你真的想把它作为一个字典迭代它就可以工作,或者你可以将它保存在一个变量中如果你想用它来做其他东西来分配名字.您也可以使用`f.f_locals.items()`罚款,但不能使用`f.f_locals.iteritems()`或`f.f_locals.iterkeys()`. (2认同)