如何在Python函数中通过另一个函数修改全局变量hgr?
问题解决:feeding函数无法修改全局变量hgr
核心问题
feeding(hgr)里的hgr是局部参数,和全局变量hgr是两个独立的变量,返回hgr+1只是修改了局部参数的值,根本没碰全局变量。- 调用
feeding(hgr)时没有把返回值赋值给全局hgr,就算返回了新值也不会生效。
修复方案(推荐直接操作全局变量)
1. 修改feeding函数
去掉参数,在函数内声明使用全局hgr,直接修改它:
def feeding(): print("""Foods available: 1: Cheap food 2: Affordable food 3: Expensive food 4: Hamburger 0: Quit """) foodChoice = input("What do you feed your pet?: ") if foodChoice == "1": print("Hunger went up by 1!") global hgr hgr += 1 # 直接修改全局饥饿值
2. 修改options函数的调用
不用传参数,直接调用feeding():
def options(): if strInput == "1": feeding()
可选方案(用返回值方式)
如果坚持用返回值的逻辑,需要在调用时把返回值赋值给全局hgr:
def options(): global hgr if strInput == "1": hgr = feeding(hgr) # 将返回值赋值给全局变量
这种方式需要确保options函数也声明了global hgr,才能修改全局变量。
额外优化点
stats函数里的hunger = hgr和hunger = 100完全多余(hunger变量后续没用到),可以删掉,简化代码:
def stats(): global hgr hgr = 100 # 直接初始化全局饥饿值 while True: print(f"Hunger: {hgr}") hgr -= 1 background_thread2 = threading.Thread(target=runningOptions) background_thread2.start() time.sleep(6)
内容的提问来源于stack exchange,提问作者Trydukk
相关产品推荐
相关产品推荐

