如何获取传递给栈中函数的参数值?
问题内容:
使用:
traceback.print_stack()
我可以得到:
File "x.py", line 20, in <module>
y(x)
File "x.py", line 11, in y
fun(x)
File "x.py", line 8, in fun
traceback.print_stack()
我有什么办法得到这样的东西:
File "x.py", line 20, in <module>
y(x) WHERE x == 1
File "x.py", line 11, in y
fun(x) WHERE x == 'str'
File "x.py", line 8, in fun
traceback.print_stack()
我只想看看传递给函数的参数。
问题答案:
您可能可以通过使用inspect.getargvalues()
和访问属于您的回溯的堆栈框架来装配一些东西:
inspect.getargvalues(traceback.tb_frame)
您必须做一些工作才能完全按照需要获取输出。上面的行仅适用于最内层的框架,因此您必须走到堆栈上方并访问每个框架所需的信息。
inspect.getouterframes()
可能会派上用场。