所以我在这里寻找的是类似PHP的print_r函数。
这样一来,我可以通过查看问题对象的状态来调试脚本。
您实际上是将两种不同的东西混合在一起。
使用dir(),vars()或inspect模块来得到你所感兴趣的是(我用__builtins__作为一个例子,你可以使用任何对象,而不是)。
dir()
vars()
inspect
__builtins__
>>> l = dir(__builtins__) >>> d = __builtins__.__dict__
随心所欲地打印该词典:
>>> print l ['ArithmeticError', 'AssertionError', 'AttributeError',...
要么
>>> from pprint import pprint >>> pprint(l) ['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'DeprecationWarning', ... >>> pprint(d, indent=2) { 'ArithmeticError': <type 'exceptions.ArithmeticError'>, 'AssertionError': <type 'exceptions.AssertionError'>, 'AttributeError': <type 'exceptions.AttributeError'>, ... '_': [ 'ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'DeprecationWarning', ...
交互式调试器中还可以作为命令提供漂亮的打印:
(Pdb) pp vars() {'__builtins__': {'ArithmeticError': <type 'exceptions.ArithmeticError'>, 'AssertionError': <type 'exceptions.AssertionError'>, 'AttributeError': <type 'exceptions.AttributeError'>, 'BaseException': <type 'exceptions.BaseException'>, 'BufferError': <type 'exceptions.BufferError'>, ... 'zip': <built-in function zip>}, '__file__': 'pass.py', '__name__': '__main__'}