为什么我的计数器没有更新,即使我在每个循环中都添加了一个?

Why does my counter not update even though I am adding one on every loop?

出于某种原因,我的计数器没有更新,即使我在 while 循环中添加了一个?

代码:

counter = 1
def loo(counter):
    counter+=1
    return counter
while 1:
    print(loo(counter))

发生这种情况是因为函数中的计数器变量是局部的,而不是全局的。因此它只会在函数内部更新。然而,如果您将函数的值分配给全局计数器,您将实现您想要的。

glob_counter = 1


def loo(local_counter):
    local_counter += 1
    return local_counter


while 1:
    glob_counter = loo(glob_counter)
    print(glob_counter)

当您将计数器作为函数的参数传递时,您创建了一个新实例,因此原始变量计数器不会更新并且他的值保持为 1。

改为这样做:

counter = 1
def loo(counter):
    counter+=1
    return counter
while 1:
    counter = loo(counter)
    print(counter)