gpt4 book ai didi

引用或复制的python递归变量?

转载 作者:太空狗 更新时间:2023-10-30 02:54:16 24 4
gpt4 key购买 nike

我有以下递归函数,但我无法弄清楚 python 如何处理递归函数中的变量。它会为每次递归创建 addresses 变量的副本,还是会覆盖变量并造成可怕的困惑?

def get_matches():
addresses = get_addresses()

#do stuff

for addr in addresses:
#do stuff
if some_condition:
get_matches()
else:
return

最佳答案

您寻找的下划线概念称为框架

Python 解释器内部有一个堆栈,通常称为调用堆栈。每次 Python 在执行过程中遇到函数调用时,都会创建一个新的框架对象并将其压入堆栈。框架代表函数调用。每个都有自己的作用域,以及传递给函数的任何参数的当前值。

这意味着即使对于函数的每次递归调用,也会为该特定 函数调用创建一个新帧并将其压入堆栈。正如我上面已经说过的,每个框架都有自己的范围。所以每个框架的作用域都有一个 address 变量定义在其中,与其他任何变量分开。

但是请注意,框架对象本身并不存储变量的。你看,Python 解释器只在堆栈的最顶层帧上运行。 Python 使用与调用堆栈分开的另一个堆栈来存储它当前正在执行的帧的局部变量的值。

关于引用或复制的python递归变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46589881/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com