我试图用字典的值进行函数调用。在
该函数接受多个参数,大多数参数具有默认值。在def foo(name, a=None, b='', c=12):
print(name,a,b,12)
如果字典被完全填充,那么函数调用如下所示。在
^{pr2}$
不过,我需要使函数调用依赖于字典中是否实际存在这些键。所以如果只存在参数的一个子集,我只传递这些参数。在def call_foo(arg_dict):
if 'a' in arg_dict and 'b' in arg_dict and 'c' in arg_dict:
foo(name=arg_dict['name'], a=arg_dict['a'], b=arg_dict['b'], c=arg_dict['c'])
elif 'a' in arg_dict and 'c' in arg_dict:
foo(name=arg_dict['name'], a=arg_dict['a'], c=arg_dict['c'])
如果使用大量可选参数,这种类型的表达式将很快变得不可管理。在
如何定义要传递给foo的命名参数列表?类似于下面的内容。在def call_foo(arg_dict):
arg_list = []
arg_list.append(name=arg_dict['name'])
if 'a' in arg_dict:
arg_list.append(a=arg_dict['a'])
if 'b' in arg_dict:
arg_list.append(b=arg_dict['b'])
if 'c' in arg_dict:
arg_list.append(c=arg_dict['c'])
foo(arg_list)