使用:
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()
我只是想看看哪些参数传递给函数。
答案 0 :(得分:12)
你可以使用inspect.getargvalues()
并访问属于你的追溯的堆栈框架来解决问题:
inspect.getargvalues(traceback.tb_frame)
你必须做一些工作才能完全按照需要获得输出。上面的行仅适用于最里面的框架,因此您必须向上移动堆栈并访问每个框架所需的信息。 inspect.getouterframes()
可能会派上用场。
答案 1 :(得分:9)
您可以使用inspect模块:
>>> import inspect
... def fn(x):
... try:
... print(1/0)
... except ZeroDivisionError as e:
... frames = inspect.trace()
... argvalues = inspect.getargvalues(frames[0][0])
... print("Argvalues: ", inspect.formatargvalues(*argvalues))
>>> fn(12)
Argvalues: (x=12)