在PHP中调试时,我经常发现在代码中插入var_dump()来显示变量是什么、它的值是什么以及它所包含的任何内容是很有用的。

Python中与之对应的是什么?


当前回答

我没有PHP经验,但我了解Python标准库。

出于你的目的,Python有几个方法:

日志记录模块;

对象序列化模块,称为pickle。你可以自己编写pickle模块的包装器。

如果你使用var_dump进行测试,Python有自己的doctest和unittest模块。它的设计非常简单和快速。

其他回答

打印

对于你自己的类,只需要定义一个__str__方法

要很好地显示值,可以使用pprint模块。使用它转储所有变量的最简单方法是执行

from pprint import pprint

pprint(globals())
pprint(locals())

如果在CGI中运行,一个有用的调试特性是cgitb模块,它将局部变量的值作为回溯的一部分显示出来。

与PHP的var_dump()最接近的是内置inspect模块中带有getmembers()函数的pprint():

from inspect import getmembers
from pprint import pprint
pprint(getmembers(yourObj))

我使用自己编写的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)

我没有PHP经验,但我了解Python标准库。

出于你的目的,Python有几个方法:

日志记录模块;

对象序列化模块,称为pickle。你可以自己编写pickle模块的包装器。

如果你使用var_dump进行测试,Python有自己的doctest和unittest模块。它的设计非常简单和快速。