我有一个带有两个可选参数的函数:
def func(a=0, b=10):
return a+b
在我代码的其他地方,我正在做一些条件参数传递,例如:
if a and b:
return func(a, b)
elif a:
return func(a)
elif b:
return func(b=b)
else:
return func()
无论如何,是否可以简化此模式中的代码?
编辑 :
假设 不允许 我在内部实现默认参数逻辑func
。
我可能有几个功能,如func
:func1
,func2
并且func3
都包含
a = a or 0
b = b or 10
陈述。
但是我正在调用这些功能来消除重复。(使用装饰器)
如果您不想更改任何内容,func
那么明智的选择就是将参数的字典传递给函数:
>>> def func(a=0,b=10):
... return a+b
...
>>> args = {'a':15,'b':15}
>>> func(**args)
30
>>> args={'a':15}
>>> func(**args)
25
>>> args={'b':6}
>>> func(**args)
6
>>> args = {}
>>> func(**args)
10
要不就:
>>>func(**{'a':7})
17