全局变量如何在递归中起作用?

时间:2018-01-30 15:05:04

标签: python python-3.x python-2.7

count=0
global count
def fact(n):
    count+=1
    if n==1:return 1
    else:return(n*fact(n-1))
print(fact(5))

当变量count被声明为全局时,变量count是否可以在所有递归帧中访问?

以上代码不起作用,但以下代码有效。有人可以解释原因吗?

count=0
def fact(n):
    global count
    count+=1
    if n==1:return 1
    else:return(n*fact(n-1))
print(fact(5))

为什么有必要在函数内部指定全局,当全局变量的整个点是在函数内使用它们时?

1 个答案:

答案 0 :(得分:3)

count += 1本地分配,会影响全局count。有一个可用于增量的全局变量并不重要。您必须声明全局,以便分配影响全局。

在功能之外使用global关键字并不做任何事情;必须使用 in 一个函数来标记一个名称,否则该名称将作为全局函数作为本地函数的本地名称。