我刚刚开始使用python,并试图围绕这个在函数中使用参数但不使用所有参数的概念,想知道这背后的逻辑。
代码如下所示:
def player_busts(player,dealer,chips):
print("Player busts!")
chips.lose_bet()
这意味着需要三个参数:玩家对象,经销商对象和筹码对象。但为什么他们只使用传入的芯片对象呢?其他两个在这里扮演什么角色?
非常感谢。
答案 0 :(得分:1)
这通常发生在回调函数中。回调是当指定事件发生时,将使用某些预设参数调用函数。
在较大程序中的某个地方,是另一种称之为游戏的游戏功能。
def play():
player = ???()
dealer = ???()
chips = ???()
while something:
if another_thing:
action = player_wins
elif something_else:
action = player_busts
elif another_thing:
action = dealer_busts
else:
action = push
action(player, dealer, chips)
由于其中某些操作需要使用player
或dealer
或chips
或它们的任意组合,因此任何被调用的操作都需要接受这些参数,即使它没有这些参数。使用它们。
如果你这样定义player_busts
,
def player_busts(chips):
print("Player busts!")
chips.lose_bet()
如果在play
中调用了该错误,则会出现以下错误。 TypeError: player_busts takes exactly one argument (3 given)
答案 1 :(得分:0)
一个函数可以使用任意数量的参数来提供它,但是不使用函数是一种浪费。函数的目的是接受参数并与它们一起工作以返回参数或参数。在您的示例中,仅使用芯片,因此可以移除其他两个芯片,并且功能仍然完全相同。
答案 2 :(得分:0)
这不是一个完整的代码示例,特别是如果您的教师为您提供了它。随着课程的进行,将添加更多功能,向您展示如何逐步构建完整的程序。你最有可能跳过枪并在这里发布了这个部分代码。
首先,该函数没有返回任何内容,这意味着它正在评估某些东西并且它停在那里,评估的结果不能在任何地方使用。这基本上意味着在您到达return
语句之前,将向此函数添加更多语句。
其次,chips.lose_bet()
是一个调用函数.lose_bet()
的语句,该函数在此示例中也未定义。
第三,这个函数中的参数也可能是稍后定义的函数本身;当他们被定义为教师时,可以从这个功能中调用它们。与此类似的方式有很多种可能性。
上述代码中的这几个点比有额外的参数更大。这基本上意味着你实际上已经试图了解这里发生了什么。所以继续你的课程,你会看到。