You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python函数中通过另一个函数修改全局变量hgr?

问题解决:feeding函数无法修改全局变量hgr

核心问题

  1. feeding(hgr)里的hgr是局部参数,和全局变量hgr是两个独立的变量,返回hgr+1只是修改了局部参数的值,根本没碰全局变量。
  2. 调用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 06:12:39