本地函数调用自身

Local Function Call on itself

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

如果创建一个函数,例如

def function(list):

然后我在列表 x

上调用这个函数
print function(x)

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

def function(list):
     function(list)

为什么那个递归调用仍然保留被称为 globablly 的 x 的值?

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

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

def function(list):
    if len(list) == 0:
        return "end"
    else
        return function(list[1:]) + list[0]

递归函数需要终止条件和 return。