在函数内部添加存储变量后,存储变量将返回其原始值



我试图更改存储的值,但没有成功,while循环完成后,该值将被设置回其原始值,而不是100。

import time
storage = 0
storage_limit = 100
def farm(storage, storage_limit):
while storage < storage_limit:
storage += 1
time.sleep(1)
print(storage)
farm(storage, storage_limit)
print(storage)

这里有一个代码示例,它可以满足您的要求。它使用global关键字并消除farm()函数中的storage参数。

import time
global storage
storage = 0
storage_limit = 100
def farm(storage_limit):
global storage
while storage < storage_limit:
storage += 1
#time.sleep(1)
print(storage)
return storage
farm(storage_limit)
print(storage)        

这是另一种方式。它更改farm()以返回其局部变量storage的修改值,并更改对farm()的调用以基于此返回值更新名为storage的外部作用域中的不同变量。

import time
storage = 0
storage_limit = 100
def farm(storage, storage_limit):
while storage < storage_limit:
storage += 1
#time.sleep(1)
print(storage)
return storage
storage = farm(storage, storage_limit)
print(storage)        
import time
global storage
storage = 0
storage_limit = 100
def farm(storage_limit):
global storage
while storage < storage_limit:
storage += 1
time.sleep(1)
print(storage)
return storage
farm(storage_limit)
print(storage)

这就是你要找的吗?如前所述,如果要调整全局变量,则需要引用函数中的全局变量。

最新更新