当我运行递归函数时,如何在Python中打印或显示递归堆栈?
答案 0 :(得分:2)
目前还不清楚你想要什么,但就我的问题而言,你可以使用python inspect module以递归的方式打印函数调用者堆栈,如下所示。
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)
您也可以使用sys.get_frame()
访问当前帧,并使用f_locals
属性,您可以以递归方式访问传递给当前帧的参数,您可以观察到此参数减少
大部分所有关于堆栈的信息都可以通过 frame 对象访问,您可以从上面获得这些对象。