python - 当您将 2 个变量分配给一个函数时会发生什么?
问题描述
我最近开始学习什么是 OOP 以及如何开始使用 Python 进行编码。不幸的是,我仍然是一个新手,我坚持理解一些代码。
def feed(state, size):
size += 1
print("Fish fed")
if size == 5:
state = "FISH"
return state, size
thisFishState = "Fish"
thisFishSize = 1
print(thisFishState, "is of size", thisFishSize)
while thisFishState != "FISH":
thisFishState, thisFishSize = feed(thisFishState, thisFishSize)
print("It is now a big", thisFishState)
我被告知要编写我自己的代码版本(我得到了伪代码),我写了这个
def Feed(State, Size):
size += 1
print("Fish fed")
if size == 5:
state = "FISH"
return State, Size
thisFishState = "Fish"
thisFishSize = 1
print(thisFishState, "is of size", thisFishSize)
while thisFishState != "FISH":
feed(thisFishState, thisFishSize)
print("It is now a big ", thisFishState)
但是我的代码没有给出与原始代码相同的输出。为什么?将 2 个变量分配给函数的目的是什么?它有什么作用?如果你能解释,你能用最简单的方式解释吗?
解决方案
首先,您的代码存在不一致之处。在函数声明中,您使用了Feed
(大写 F),但稍后在代码中,您调用了feed
(小写 f)。解决这个问题!
请注意,您将两个变量分配给函数的返回值,而不是函数本身。为了回答您的问题,该函数Feed
返回两个值(State
和Size
)。以下行只是将它们解包:
thisFishState, thisFishSize = feed(thisFishState, thisFishSize)
换言之,设置为从(ie )thisFishState
返回的第一个值,并设置为第二个值 (ie )。Feed
State
thisFishSize
Size
在您的代码中,您只需在feed
不保存或在任何地方使用它的值的情况下进行调用:
feed(thisFishState, thisFishSize)
您的代码缺少的是:
thisFishState, thisFishSize = feed(thisFishState, thisFishSize)
有关更多信息,请参阅有关 python 中的解构的此页面。另外,请查一下骆驼箱!:-)