您可以将此调试宏从C ++转换为python吗?
问题内容:
在C ++中进行开发时,我使用这个非常有用的宏:
#define DD(a) std::cout << #a " = [ " << a << " ]" << std::endl;std::cout.flush();
您能帮我在python中实现相同的想法吗?我不知道如何#a
用python函数实现…
问题答案:
您可以检查堆栈跟踪并“解析”它。由于您知道函数的名称(在本例中为dd),因此找到调用并提取变量的名称变得相当容易。
import inspect
import re
def dd(value):
calling_frame_record = inspect.stack()[1]
frame = inspect.getframeinfo(calling_frame_record[0])
m = re.search( "dd\((.+)\)", frame.code_context[0])
if m:
print "{0} = {1}".format(m.group(1), value)
def test():
a = 4
dd(a)
test()
输出量
a = 4