python函数,传递多个参数,不要全部使用它们?

时间:2018-06-11 01:00:05

标签: python function arguments

我刚刚开始使用python,并试图围绕这个在函数中使用参数但不使用所有参数的概念,想知道这背后的逻辑。

代码如下所示:

def player_busts(player,dealer,chips):
    print("Player busts!")
    chips.lose_bet()

这意味着需要三个参数:玩家对象,经销商对象和筹码对象。但为什么他们只使用传入的芯片对象呢?其他两个在这里扮演什么角色?

非常感谢。

3 个答案:

答案 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)

由于其中某些操作需要使用playerdealerchips或它们的任意组合,因此任何被调用的操作都需要接受这些参数,即使它没有这些参数。使用它们。

如果你这样定义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()的语句,该函数在此示例中也未定义。

第三,这个函数中的参数也可能是稍后定义的函数本身;当他们被定义为教师时,可以从这个功能中调用它们。与此类似的方式有很多种可能性。

上述代码中的这几个点比有额外的参数更大。这基本上意味着你实际上已经试图了解这里发生了什么。所以继续你的课程,你会看到。