我有一个带有两个可选参数的函数:
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
我可能有几个功能,如func:func1,func2并且func3都包含
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