Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中打印递归堆栈_Python_Recursion - Fatal编程技术网

如何在Python中打印递归堆栈

如何在Python中打印递归堆栈,python,recursion,Python,Recursion,当我运行递归函数时,如何在Python中打印或显示递归堆栈?不清楚您想要什么,但就我所知,您可以使用Python以如下递归方式打印函数调用程序堆栈 您还可以使用sys.get_frame()来访问当前帧,并且通过使用f_locals属性,您可以访问传递到当前帧的参数,以递归方式,您可以观察到该参数的减少 大多数情况下,您需要的关于堆栈的所有信息也可以从我上面介绍的框架对象中访问。您指的是什么堆栈?您能再解释一下您的问题吗?每次调用递归函数时,该语言都会生成一个结果堆栈。。。这有意义吗?@AAA我

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

不清楚您想要什么,但就我所知,您可以使用Python以如下递归方式打印函数调用程序堆栈

您还可以使用
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)