如何干净地在python中传递许多参数并具有默认值?

时间:2018-09-23 19:32:19

标签: python arguments

我有一个函数,它具有一堆(〜25)参数。但是,我通常希望使用其中大多数参数的默认值,并且仅指定一对(以使用默认值以外的值)。所以我一直在做类似的事情(相同的想法,但此示例中的参数较少):

def myFn(self,a=20,b=10,c=5):
    self.a = a
    self.b = b
    self.c = c

myFn(a=100)

这将给出a的值100,并将b和c保留为其默认值。

这一直有效到现在。但是,它变得繁琐,在函数定义中有上百万个参数,而且如果我用大量参数调用函数,也是如此。

有更好的方法吗?我知道您可以将关键字参数作为字典传递,这几乎是我想要的。但是如何在函数内部提供默认值呢?

编辑:这不是What does ** (double star/asterisk) and * (star/asterisk) do for parameters?的副本,因为这对我应该使用默认值的操作没有帮助。

1 个答案:

答案 0 :(得分:1)

使用**kwargs并为每个项目使用所需的默认值调用.get()

def myFn(self, **kwargs):
    self.a = kwargs.get('a', 20)
    self.b = kwargs.get('b', 10)
    self.c = kwargs.get('c', 5)