首页 > 解决方案 > 当您将 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 个变量分配给函数的目的是什么?它有什么作用?如果你能解释,你能用最简单的方式解释吗?

标签: pythonoop

解决方案


首先,您的代码存在不一致之处。在函数声明中,您使用了Feed(大写 F),但稍后在代码中,您调用了feed(小写 f)。解决这个问题!

请注意,您将两个变量分配给函数的返回值,而不是函数本身。为了回答您的问题,该函数Feed返回两个值(StateSize)。以下行只是将它们解包:

thisFishState, thisFishSize = feed(thisFishState, thisFishSize)

换言之,设置为从(ie )thisFishState返回的第一个值,并设置为第二个值 (ie )。FeedStatethisFishSizeSize

在您的代码中,您只需在feed不保存或在任何地方使用它的值的情况下进行调用:

feed(thisFishState, thisFishSize)

您的代码缺少的是:

thisFishState, thisFishSize = feed(thisFishState, thisFishSize)

有关更多信息,请参阅有关 python 中的解构的此页面。另外,请查一下骆驼箱!:-)


推荐阅读