在PHP中调试时,我经常发现在代码中插入var_dump()来显示变量是什么、它的值是什么以及它所包含的任何内容是很有用的。
Python中与之对应的是什么?
在PHP中调试时,我经常发现在代码中插入var_dump()来显示变量是什么、它的值是什么以及它所包含的任何内容是很有用的。
Python中与之对应的是什么?
当前回答
我写了一个非常轻量级的替代PHP的var_dump在Python中使用的替代品,后来使它成为开源的。
GitHub: https://github.com/sha256/python-var-dump
你可以简单地使用pip安装它:
pip install var_dump
使用的例子:
from var_dump import var_dump
var_dump(1, {"testkey1": "testval1", "testkey2": "testval2".encode("ascii")},
["testval"], "test", "test".encode("ascii"), set([1,2,3]))
打印
#0 int(1)
#1 dict(2)
['testkey1'] => str(8) "testval1"
['testkey2'] => object(bytes) (b'testval2')
#2 list(1)
[0] => str(7) "testval"
#3 str(4) "test"
#4 object(bytes) (b'test')
#5 object(set) ({1, 2, 3})
其他回答
与PHP的var_dump()最接近的是内置inspect模块中带有getmembers()函数的pprint():
from inspect import getmembers
from pprint import pprint
pprint(getmembers(yourObj))
打印
对于你自己的类,只需要定义一个__str__方法
我认为最好的等效PHP的var_dump($foo, $bar)是结合打印与vars:
print vars(foo),vars(bar)
要很好地显示值,可以使用pprint模块。使用它转储所有变量的最简单方法是执行
from pprint import pprint
pprint(globals())
pprint(locals())
如果在CGI中运行,一个有用的调试特性是cgitb模块,它将局部变量的值作为回溯的一部分显示出来。
我使用自己编写的Printer类,但dir()也适用于输出实例字段/值。
class Printer:
def __init__ (self, PrintableClass):
for name in dir(PrintableClass):
value = getattr(PrintableClass,name)
if '_' not in str(name).join(str(value)):
print ' .%s: %r' % (name, value)
用法示例:
Printer(MyClass)