Python 为什么';此函数是否正确更新变量?

Python 为什么';此函数是否正确更新变量?,python,function,addition,Python,Function,Addition,基本上,一旦这个代码被运行,程序就会打印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的当前值,

基本上,一旦这个代码被运行,程序就会打印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
的当前值,而不是变量本身

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

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


问题是,调用
calculate()
时,传递的是变量
gold
的当前值,而不是变量本身

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

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


看起来你的目标是:

gold = 0

def display():
    calculate()
    calculate()

def calculate():
    global gold
    gold += 10
    gold = gold + 10
    print(gold)

display()

由于
gold
在这里是一个全局变量,因此不需要将其作为参数显式传递给
calculate

看起来你的目标是:

gold = 0

def display():
    calculate()
    calculate()

def calculate():
    global gold
    gold += 10
    gold = gold + 10
    print(gold)

display()

由于
gold
在这里是一个全局变量,因此不需要将其作为参数显式传递给
calculate

很抱歉,如果你想计算全局变量gold,为什么需要一个参数?你的程序实际上在两行上打印20。它返回
None
您不需要<代码>打印与
返回
@Cunningham不同,非常感谢。我认为java使用可变整数,或者我可能错了,但是我确实相信它们是可变的。谢谢分享!很抱歉,如果你想计算全局变量gold,为什么需要一个参数?你的程序实际上在两行上打印20。它返回
None
您不需要<代码>打印与
返回
@Cunningham不同,非常感谢。我认为java使用可变整数,或者我可能错了,但是我确实相信它们是可变的。谢谢分享!我不需要定义gold2吗?@ProMCKingz这是一个函数参数,所以当你在调用它时向该函数传递一个值时,它被赋值到那里。谢谢,现在有意义了。我不需要定义gold2吗?@promcking这是一个函数参数,所以当你在调用它时向该函数传递一个值时,它被赋值到那里。谢谢,现在有意义了
gold = 0

def display():
    calculate()
    calculate()

def calculate():
    global gold
    gold += 10
    gold = gold + 10
    print(gold)

display()