Python 为什么';此函数是否正确更新变量?
基本上,一旦这个代码被运行,程序就会打印20,20;然而,我想让它做的是在之前的黄金基础上再增加20。所以程序应该打印20,40Python 为什么';此函数是否正确更新变量?,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的当前值,
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()