max*_*max 5 python debugging introspection python-3.x
在某些情况下,我想打印调试样式的输出,如下所示:
# module test.py
def f()
a = 5
b = 8
debug(a, b) # line 18
Run Code Online (Sandbox Code Playgroud)
我希望该debug函数打印以下内容:
debug info at test.py: 18
function f
a = 5
b = 8
Run Code Online (Sandbox Code Playgroud)
我认为应该可以通过使用inspect模块定位堆栈框架,然后查找相应的行,查找该行中的源代码,从那里获取参数的名称.可以通过向上移动一个堆栈帧来获得函数名称.(参数的值很容易获得:它们直接传递给函数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()
Run Code Online (Sandbox Code Playgroud)
这打印出:
test.py:12 f()
a = 5
b = 8
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3872 次 |
| 最近记录: |