我有一个函数,它具有一堆(〜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?的副本,因为这对我应该使用默认值的操作没有帮助。
答案 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)