【发布时间】:2015-11-16 18:18:51
【问题描述】:
出于调试目的,我想打印出与 Python 方法中执行的每一行相关的内容。
例如,如果行中有一些赋值,我想打印为该变量分配了什么值,如果有函数调用,我想打印出函数返回的值等。
因此,例如,如果我要使用装饰器,则应用于函数/方法,例如:
@some_decorator
def testing() :
a = 10
b = 20
c = a + b
e = test_function()
调用函数测试时,应打印以下内容:
a = 10
b = 20
c = 30
e = some_value
有什么方法可以实现吗?更根本的是,我想知道我是否可以编写一个可以逐行通过其他代码的代码,检查它是什么类型的指令等等。或者也许我们可以得到一本字典来找出所有变量一个类,我可以得到一个像数据结构这样的字典来获取函数中的每条指令,这和元程序一样好。
因此,我特别在寻找使用装饰器的解决方案,因为我很好奇是否可以拥有一个可以逐行遍历整个函数并逐行装饰它的装饰器, 但欢迎任何和所有解决方案。
提前致谢。
【问题讨论】:
-
可以,但我不知道。本质上,您可以从修饰函数中提取文件和行号,重新读取函数,将其编译为 AST,在 AST 中插入节点,然后编译 AST 并将其用作函数。一个有趣的项目。
-
也许
pdb模块会有所帮助? -
@perreal 您能否更详细地解释您的方法或提供一个链接,我可以在其中找到有关您方法中元素的更多信息,以及如何将这些元素应用于我的问题。顺便感谢您的回复
-
@ironstein:初学者请查看此内容tomforb.es/automatically-inline-python-function-calls
-
基本上你必须将你的函数包装在一个函数中,将其加载到调试器中,然后单步执行该函数。
标签: python debugging decorator python-decorators