作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在 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 方法是什么?
最佳答案
您可以使用 all
检查它们是否都等于 None
并引发 ValueError
:
if all(v is None for v in {arg_a, arg_b}):
raise ValueError('Expected either arg_a or arg_b args')
这摆脱了那些 if-elif
子句并将所有检查分组在同一个地方:
f(arg_a=0) # ok
f(arg_b=0) # ok
f() # Value Error
或者,使用 any()
:
if not any(v is not None for v in {arg_a, arg_b}):
raise ValueError('Expected either arg_a or arg_b args')
但这肯定更加混淆。
最后,这真的取决于 pythonic 的实际解释是什么。
关于python - 如何在 python 中检查指定函数的至少一个默认参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38881888/
我是一名优秀的程序员,十分优秀!