通常在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