本地函数调用自身

时间:2015-12-03 22:24:13

标签: python variables recursion global local

学习python,搜索这个问题,并且很难弄清楚为什么我会得到我的行为。我得到了正确的输出,但我不知道为什么,我只是想知道前进只是为了更好地理解这个概念。让我解释一下:

如果创建一个函数,如

def function(list):

然后我在列表x

上调用此函数
print function(x)

如果我那时用函数本身回忆这个函数就像这样:

def function(list):
     function(list)

为什么递归调用仍然保存x的值,称为globablly?

1 个答案:

答案 0 :(得分:2)

"列表"然后在参数列表中传递给下一个调用。每一个都是x的直接副本。它不是全球x;它是传递下来的变量列表中的本地副本。

请注意,这是无限递归的直接示例:无法停止调用自身的函数链。相反,你可能想要像

这样的东西
def function(list):
    if len(list) == 0:
        return "end"
    else
        return function(list[1:]) + list[0]

递归函数需要终止条件并返回一些东西。