如何在Python

时间:2016-09-13 07:06:01

标签: python recursion

当我运行递归函数时,如何在Python中打印或显示递归堆栈?

1 个答案:

答案 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 对象访问,您可以从上面获得这些对象。