【发布时间】:2021-02-23 10:04:00
【问题描述】:
在python中检查函数的至少一个默认参数是否被指定的最佳实践是什么?
假设我们有一些函数:
def some_function(arg_a=None, arg_b=None, arg_c=False)
带有一些默认参数。就我而言,我需要检查是否指定了 arg_a 或 arg_b。所以我想到了实现这样的东西:
def some_function(arg_a=None, arg_b=None, arg_c=False):
...
if arg_a is not None:
...
elif arg_b is not None:
...
else:
raise ValueError('Expected either arg_a or arg_b args')
...
...
那么,有什么更 Pythonic 的方式来实现这种功能呢?
【问题讨论】:
-
参数必须这样设置吗?为了强制用户使用其中一个或另一个,我可能会定义函数
some_function(arg, using_a)- 这样就没有不指定一个或另一个的选项 -
同意总的来说这是一个糟糕的模式。您不应该尝试以这种方式重载函数。如果您确信这是最适合您的用例的,这里有很多很好的答案。
标签: python function parameter-passing