假设我有一个函数以两个对象作为可选参数输入,对象中的一些参数有默认值,在JavaScript中,我可以这样实现:
function func(setting1, setting2){
arga = setting1.a || 1;
argb = setting2.b || 2;
argc = setting2.c;
...
}
我想到了一些想法,但我认为没有一个是“好的”
第一个是:
params = {"arga":2, "argb":3}
def func(argc, arga=1, argb=2):
...
func(**params)
问题是,这种类型的实现不能支持我想要的语义,即setting1和setting2需要分开,因为它们服务于不同的子过程。此外,它还需要手动仔细选择默认参数的位置
这是第二个:
def func(setting1, setting2):
try:
arga = setting1.a
except KeyError:
arga = 1
...
我觉得很难看
也许这是最好的:
def func(setting1, setting2):
arga = setting1.get("a") or 1
argb = setting1.get("b") or 2
...
有什么好方法可以用python实现吗
我不知道你说的丑陋是什么意思,但这最接近你想要的我认为:
注意,在Python中这一点并没有真正意义,因为它支持默认参数和键控调用,所以
打电话给
只设置第二个设置,第一个设置使用默认值。当然,如果默认值涉及函数调用,那么您必须使用您的解决方案
如果
settingN
是dict
,则可以执行以下操作:因此,如果
settingN
没有键'z'
,则default_value
将被返回相关问题 更多 >
编程相关推荐