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))
为什么有必要在函数内部指定全局,当全局变量的整个点是在函数内使用它们时?
答案 0 :(得分:3)
count += 1
是本地分配,会影响全局count
。有一个可用于增量的全局变量并不重要。您必须声明全局,以便分配影响全局。
在功能之外使用global
关键字并不做任何事情;必须使用 in 一个函数来标记一个名称,否则该名称将作为全局函数作为本地函数的本地名称。