Skip to main content
 首页 » 编程设计

python之为什么这个函数不能正确更新变量

2025年05月04日13JeffreyZhao

基本上,一旦运行这段代码,程序就会打印 20, 20;然而,我希望它做的是在之前的黄金基础上再增加 20。所以程序应该打印 20, 40。

gold = 0 
 
def display(): 
    calculate(gold) 
    calculate(gold) 
 
def calculate(gold): 
    gold += 10 
    gold = gold + 10 
    print(gold) 
 
display() 

请您参考如下方法:

问题是,当您调用 calculate() 时,您传入的是变量 gold 的当前 value,而不是变量本身。

因此,当您在 calculate 中将 10 添加到 gold 时,原始 gold 变量不受影响。这两个变量具有相同的名称,但指向不同的值。下面,我将其中一个命名为 gold2 来阐明这一点。

如果您从 calculate 返回新值,您可以更新外部 gold 变量(即将名称 gold 重新绑定(bind)到一个新的 int对象):

gold = 0 
 
def calculate(gold2): 
    gold2 = gold2 + 10 
    return gold2 
 
gold = calculate(gold)  # 10 
gold = calculate(gold)  # 20