c++ - 你能把这个调试宏从 C++ 翻译成 Python 吗?

标签 c++ python debugging logging macros

我在用 C++ 开发时使用这个非常有用的宏:

#define DD(a) std::cout << #a " = [ " << a << " ]" << std::endl;std::cout.flush();

你能帮我用python实现同样的想法吗?我不知道如何使用 python 函数实现 #a...

最佳答案

作为@Andrea Spadaccini@adirau指出,将值可靠地映射回 Python 变量名是不可能的。您可以遍历所有 namespace 以查找引用给定值的变量名,但这会与系统发生冲突并容易返回错误的变量名。

只传递变量名要容易得多:

import inspect
def pv(name):
    frame,filename,line_number,function_name,lines,index=inspect.getouterframes(
        inspect.currentframe())[1]    
    # print(frame,filename,line_number,function_name,lines,index)
    val=eval(name,frame.f_globals,frame.f_locals)
    print('{0}: {1}'.format(name, val))


a=5
pv('a')

产量:

a: 5

关于c++ - 你能把这个调试宏从 C++ 翻译成 Python 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5503363/

相关文章:

c++ - vc++ - 如何将 CString 转换为 LPCWSTR

c++ - 'TraceEvents' 未定义;假设 extern 返回 int

C++:类的名称与命名空间的名称相同

filter() 和 map() 之间的 Python 区别

python - 如何将 X 列的所有条目乘以常数,其中 X 是变量

c++ - GDB - 我在哪个线程上?

debugging - 如何测试 GAS 中的触发功能?

c++ - 不规则形状识别opencv

python - 在 Python 中绘制向量数组 (pyplot)

eclipse - 在 Eclipse 中进行模糊测试? 'Run As..."中基于规则的模糊器