在某些情况下,我想打印调试样式的输出,如下所示:
# module test.py
def f()
a = 5
b = 8
debug(a, b) # line 18
我想要debug
函数打印以下内容:
debug info at test.py: 18
function f
a = 5
b = 8
我认为应该可以通过使用检查模块来定位堆栈帧,然后找到适当的行,查找该行中的源代码,从那里获取参数的名称。函数名可以通过向上移动一个堆栈帧来获得。 (参数的值很容易获得:它们直接传递给函数debug
.)
我走在正确的轨道上吗?有什么食谱可以参考吗?
你可以按照以下方式做一些事情:
import inspect
def debug(**kwargs):
st = inspect.stack()[1]
print '%s:%d %s()' % (st[1], st[2], st[3])
for k, v in kwargs.items():
print '%s = %s' % (k, v)
def f():
a = 5
b = 8
debug(a=a, b=b) # line 12
f()
这打印出:
test.py:12 f()
a = 5
b = 8
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)