全局变量如何在递归中工作


count=0
global count
def fact(n):
    count+=1
    if n==1:return 1
    else:return(n*fact(n-1))
print(fact(5))
当变量计数

声明为全局时,变量计数是否在所有递归帧中都可访问?

上面的代码不起作用,但是下面的代码有效。有人可以解释为什么吗?

count=0
def fact(n):
    global count
    count+=1
    if n==1:return 1
    else:return(n*fact(n-1))
print(fact(5))
当全局变量

的全部意义是在函数中使用它们时,为什么需要在函数内部指定全局变量?

count += 1

隐藏全局count本地赋值。有一个全局变量可以递增并不重要。必须声明全局才能使赋值影响全局。

函数外部使用 global 关键字不会执行任何操作;它必须在函数中使用,以将原本属于函数作用域本地的名称标记为全局名称。

最新更新