我试图按照干的原则编写不重复的代码。
考虑包含许多参数的函数调用,包括强制性的和可选的。在某些情况下,我希望为可选参数指定一个值,而在另一些情况下,我希望将该值保留为默认值。为了简化我的问题:
def func(a, b=2):
print("b = {}".format(b))
avalue = 1
condition = 2
arg = None # <-- Means: "use default"
if condition == 1:
arg = 3
func(avalue, b=arg)输出
b = None预期输出
b = 2因此,我试图避免像这样两次编写函数调用的代码:
if arg:
func(avalue, b=arg)
else:
func(avalue)在Python中有可能吗?
发布于 2017-06-26 09:42:33
使用字典,并且只将可选参数设置为键值对,如果要指定它。然后使用**kwargs调用语法应用字典:
avalue = 1
condition = 2
kwargs = {}
if condition == 1:
kwargs['b'] = 3
func(avalue, **kwargs)一个空字典( condition != 1大小写)将b设置为默认值。
发布于 2017-06-26 09:55:11
解决办法之一可以是:
def func(a, b=2, **kwargs):
print("b = {}".format(b))
avalue = 1
condition = 2
func(avalue, **{} if condition != 1 else {'b':3})发布于 2017-06-26 09:42:51
这个怎么样:
def func(a, b=None):
b = 2 if not b else b
print("b = {}".format(b))
avalue = 1
condition = 2
arg = None # <-- Means: "use default"
if condition == 1:
arg = 3
func(avalue, arg) # b = 2如果condition = 1
func(avalue, arg) # b = 3以上假设您可以修改函数定义。如果不是这样的话,您必须使用**kwargs。
https://stackoverflow.com/questions/44756825
复制相似问题