Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将两个变量赋给函数时会发生什么?_Python_Oop - Fatal编程技术网

Python 将两个变量赋给函数时会发生什么?

Python 将两个变量赋给函数时会发生什么?,python,oop,Python,Oop,我最近开始学习什么是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", thisFishS

我最近开始学习什么是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)
但是,我的代码没有给出与原始代码相同的输出。为什么?
为一个函数指定两个变量的目的是什么?它有什么作用?如果你能解释,你能用最简单的方式解释吗

首先,代码中存在不一致性。在函数声明中,您使用了Feed大写字母F,但在代码的后面,您调用了Feed小写字母F。修好这个

请注意,您将两个变量指定给函数的返回值,而不是函数本身。为了回答您的问题,函数Feed返回两个值State和Size。下面的行只是将它们解包:

thisFishState,thisFishSize=feedthisFishState,thisFishSize 换句话说,thisFishState设置为从提要返回的第一个值,即State,thisFishSize设置为第二个值,即Size

在代码中,您只需调用提要,而无需在任何地方保存或使用其值:

feedthisFishState,thisFishSize 您的代码缺少以下内容:

thisFishState,thisFishSize=feedthisFishState,thisFishSize
有关更多信息,请参见关于python中的分解。另外,请查阅camelcase!:-

将两个变量赋给一个函数调用什么?您是指使用元组解包将函数的输出分配给两个单独的变量吗?这与问题描述的相反。第一个代码是thisFishState,thisFishSize=feedthisFishState,thisFishSize,而我的代码只是调用函数Feed,这一小部分让我很困惑,因为一件事:Feed!=饲料,大小!=大小和状态!=状态在python案例中,MattersOK——这确实是元组解包。链接的副本应该会帮助你-看到它们出现在问题的顶部。@G.Anderson:前两个至少是明显的错误。那个州的事实!=状态更糟糕,因为它们以这样一种方式使用这两者:if size==5:state=FISH实际上永远不会发生,因为状态被分配并忽略,而未更改的状态就是返回的状态。无论如何,它们都应该是小写的,因为它们都不是类。显示的大写词的唯一大小写是类名和键入别名类型,两者都不在这里。如果我理解正确,设置变量或元组解包将返回变量,而不需要返回?camelcasing只对类使用大写字母?你应该只对类名使用StudlyCaps。但是这太神奇了,你对这段代码的解释比我的老师好得多:d我提到camelcase的原因是因为它是使用Python时最常见的命名约定,选择一个非常重要!它不一定非得如此,只要选一个并坚持下去就行了。如果混合使用多种命名约定,您将很难记住您是将变量命名为myVariable、myVariable、my_variable还是my_variable等,而且如果您坚持一种命名约定,这将使代码更易于阅读和理解。查看此页面了解更多信息:祝你好运!