基本上,一旦运行此代码,程序就会打印20,20;然而,我希望它能够为之前的黄金增加20倍。所以程序应该打印20,40。
gold = 0
def display():
calculate(gold)
calculate(gold)
def calculate(gold):
gold += 10
gold = gold + 10
print(gold)
display()
答案 0 :(得分:4)
问题在于,当您致电calculate()
时,您传递的是变量gold
的当前值,而不是变量本身。
因此,当您在gold
中向calculate
添加10时,原始gold
变量不受影响。这两个变量具有相同的名称,但指向不同的值。下面,我已将其中一个gold2
命名为澄清这一点。
如果从calculate
返回新值,则可以更新外部gold
变量(即将名称gold
重新绑定到新的int对象):
gold = 0
def calculate(gold2):
gold2 = gold2 + 10
return gold2
gold = calculate(gold) # 10
gold = calculate(gold) # 20
答案 1 :(得分:2)
看起来你的目标是:
gold
由于此处calculate
是一个全局变量,因此您无需将其作为参数显式传递给{{1}}。
答案 2 :(得分:1)
gold = 0
def display():
global gold
gold = calculate(gold)
calculate(gold)
def calculate(gold):
gold += 10
gold = gold + 10
print(gold)
return gold
display()