通常在C程序(和使用GCC)中,我将创建一个调试打印宏,其中包含当前函数的名称。也就是说,这样的:在Python中打印时包含当前方法名称
#define DPRINTF(fmt, ...) printf("[%s] " fmt, __FUNCTION__, ##__VA_ARGS__)
使用时,当前的功能将被预置到每个打印,提供在运行时更加有用的调试信息。例如,下面的代码
#include <stdio.h>
#define DPRINT(fmt, ...) printf("[%s] " fmt, __FUNCTION__, ##__VA_ARGS__)
void testfunction1(){
DPRINT("Running %d\n",1);
}
void testfunction2(){
DPRINT("Running %d\n",2);
}
int main(void) {
DPRINT("Running: %d\n",0);
testfunction1();
testfunction2();
return 0;
}
将输出:
[main] Running: 0
[testfunction1] Running 1
[testfunction2] Running 2
能像这样在Python做呢?
我搜索了一下,发现this StackOverflow问题,解释如何使用inspect
从堆栈中读取名称。但是,从我发现的Python不支持宏,所以不能使用与我的C程序相同的窗体。
是否有某种机制可以支持这种类型的调试打印?我尝试了lambda表达式,但本例中的“函数名称”打印为“< lambda>”。
它仍然不清楚什么你期待 –
@AmeyYadav ,更新了问题。 – sherrellbc
你可以把你尝试过的示例代码放在哪里,通常很容易从那里开始。为了快速回答,是的,你可以在python中检查装饰器的使用。你可以包装一个函数来调试它的名字。 – suvy