如何在Python中打印递归堆栈
当我运行递归函数时,如何在Python中打印或显示递归堆栈?不清楚您想要什么,但就我所知,您可以使用Python以如下递归方式打印函数调用程序堆栈 您还可以使用如何在Python中打印递归堆栈,python,recursion,Python,Recursion,当我运行递归函数时,如何在Python中打印或显示递归堆栈?不清楚您想要什么,但就我所知,您可以使用Python以如下递归方式打印函数调用程序堆栈 您还可以使用sys.get_frame()来访问当前帧,并且通过使用f_locals属性,您可以访问传递到当前帧的参数,以递归方式,您可以观察到该参数的减少 大多数情况下,您需要的关于堆栈的所有信息也可以从我上面介绍的框架对象中访问。您指的是什么堆栈?您能再解释一下您的问题吗?每次调用递归函数时,该语言都会生成一个结果堆栈。。。这有意义吗?@AAA我
sys.get_frame()
来访问当前帧,并且通过使用f_locals
属性,您可以访问传递到当前帧的参数,以递归方式,您可以观察到该参数的减少
大多数情况下,您需要的关于堆栈的所有信息也可以从我上面介绍的框架对象中访问。您指的是什么堆栈?您能再解释一下您的问题吗?每次调用递归函数时,该语言都会生成一个结果堆栈。。。这有意义吗?@AAA我已经更新了下面的答案,请查看您是否还有其他无法通过帧访问的内容。
import inspect, sys
max_recursion_depth = 10
def rec_func(recursion_index):
if recursion_index == 0:
return
rec_func(recursion_index-1)
current_frame = inspect.currentframe()
calframe = inspect.getouterframes(current_frame, 2)
frame_object = calframe[0][0]
print("Recursion-%d: %s" % (max_recursion_depth - recursion_index, frame_object.f_locals))
print("Passed parameters: %s" % (sys._getframe(1).f_locals) )
rec_func(max_recursion_depth)