【发布时间】:2018-03-17 07:46:41
【问题描述】:
我有以下递归函数,但我无法弄清楚 python 如何处理递归函数中的变量。它会为每次递归创建addresses 变量的副本,还是会覆盖该变量并造成可怕的混乱?
def get_matches():
addresses = get_addresses()
#do stuff
for addr in addresses:
#do stuff
if some_condition:
get_matches()
else:
return
【问题讨论】:
-
作用域不同,变量不同。
-
addresses是一个局部变量... -
@erip scope 是我在 Google 搜索中缺少的神奇词,谢谢!
-
一般来说,name
addresses存在于递归的每个作用域(或框架)中。但是,如果get_addresses()被定义为返回单个可变 object,那么 name 无关紧要,因为所有帧都将引用同一个 object 。我们在 Python 中一般不谈论 变量,而是谈论 names 和 objects。 -
在这里试试pythontutor.com,然后你会看到