Best practice default function parameters python
我想知道关于函数的默认值的最佳实践是什么。
假设我有一个函数:
1 2 3 4 5 6 7 | def my_function(x, **kwargs): kwargs_default = {'boolean_offset': False} kwargs_default.update(kwargs) if kwargs_default['boolean_offset']: x += 100 return x |
这只是一个简单的例子,没有任何其他意义。
重点是我有一个名为
在我的实际问题中,有一个函数有许多输入变量。通常并不是所有这些输入变量都被使用,在大多数情况下,用户希望使用默认设置。为了提高代码的可读性,我想使用
我的示例中的代码是实现这一点的最佳方法吗?
*args和**kwargs不能使代码更可读,相反,它们是纯粹的地狱。以前,您的编辑器可以向您显示函数参数,现在只有**kwargs-并且没有可靠的方法来找到可以或必须设置哪些参数。
如果您有许多参数,您应该拆分函数或添加一个配置类,这也可以用来进行健全性检查。
您可以使用**kwargs或*args。如果要使用**Kwargs,我将在声明中添加布尔值偏移量的默认值,如下所示:
1 | def my_function(x, boolean_offset = False, **kwargs) |
我将使用**Kwargs传递更多没有默认值的参数。
虽然我同意这样一个事实,即使用*args/**kwargs并不是一种可行的方法,但是如果您仍然希望围绕这些行做一些事情,您可以定义一个默认的dict并使用它。
像这样:
1 2 3 4 5 | from collections import defaultdict def my_function(x, **kwargs): my_default_dict = defaultdict(lambda : False) for key in kwargs.keys(): my_default_dict[key] = kwargs[key] |
这是假设您希望所有默认值都是某个值(在本例中为false),然后您可以使用我的默认值。在任何其他情况下,你都必须手动完成(进一步加强我上面的答案)。