首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >python函数,传递多个参数,而不是全部使用?

python函数,传递多个参数,而不是全部使用?
EN

Stack Overflow用户
提问于 2018-06-11 09:00:05
回答 3查看 855关注 0票数 1

我刚开始使用python,正在尝试理解在函数中有参数但不使用所有参数的概念,我想知道这背后的逻辑。

代码如下所示:

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

它需要接受三个参数:一个玩家对象、一个庄家对象和一个筹码对象。但是为什么他们只使用传入的chips对象呢?另外两个在这里有什么作用吗?

非常感谢。

EN

回答 3

Stack Overflow用户

发布于 2018-06-11 16:21:47

这经常发生在回调函数中。回调是指当特定事件发生时,使用某些预设参数调用的函数。

在一个较大的程序中,有另一个游戏函数调用这些函数。

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
EN

Stack Overflow用户

发布于 2018-06-11 09:05:24

一个函数可以接受任意多个参数来填充它,但是不将其与函数一起使用是一种浪费。函数的目的是接受参数,并对它们做一些工作,以返回一个或多个参数。在您的示例中,只使用了芯片,因此可以删除其他两个,并保持函数的行为完全相同。

票数 0
EN

Stack Overflow用户

发布于 2018-06-11 10:23:14

这不是一个完整的代码示例,特别是如果您的讲师已经为您提供了它。随着课程的继续,它将添加更多功能,向您展示如何一步一步地构建完整的程序。您很可能抢先一步,在这里发布了这部分代码。

首先,函数没有返回任何东西,这意味着它正在计算一些东西,然后就到此为止了,计算的结果不能在任何地方使用。这基本上意味着更多的语句将被添加到此函数中,直到您到达return语句。

其次,chips.lose_bet()是一个调用函数.lose_bet()的语句,该函数在本例中也没有定义。

第三,此函数中的参数可能是稍后定义的函数本身;当教师定义它们时,可能会从此函数中调用它们。与此类似的可能性有很多。

这几点比额外的参数在上面的代码中存在更大的漏洞。这基本上意味着,在试图理解这里发生的事情时,你实际上是草率行事。所以继续你的课程,你就会明白。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50789348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档