Python中多变量接收单个函数返回值为何各变量值不同?
为什么多个变量赋值给函数调用后值不同?
这是因为你误解了Python里这种赋值方式的逻辑——beans, jars, crates = secret_formula(start_point)不是把函数返回的同一个值同时赋值给三个变量,而是做了「元组解包」操作。
具体拆解:
函数返回的是多个值(本质是元组)
看secret_formula函数的最后一行:return jelly_beans, jars, crates,Python里用逗号分隔的多个返回值,会被打包成一个元组返回。代入start_point=10000计算时,它实际返回的是(5000000, 5000, 50)这样的元组。解包操作把元组元素分配给对应变量
等号左边的beans, jars, crates是三个变量,Python会把函数返回的元组里的第一个元素赋值给beans,第二个给jars,第三个给crates。这就对应了函数内部计算出的三个不同结果,所以三个变量值自然不同。
如果你想让三个变量值一致
那得用这种写法:
beans = jars = crates = secret_formula(start_point)[0] # 取返回元组的第一个元素赋值给所有变量
或者直接修改函数让它返回单个值,但显然这不是这段代码的设计意图。
内容的提问来源于stack exchange,提问作者Escape
相关产品推荐
相关产品推荐

