将参数列表传递给包含关键字参数的函数



我想生成一个大列表,传递给函数。其中一部分是传递关键字参数,但我似乎无法让它发挥作用,因为关键字dict被当作位置参数:

mylist = [
['cheese', 'toast', 'bread', {exempt=True}],
['bagel', 'apple', 'oatmeal', {exempt=True}],
]
for i in mylist:
myfunc(*i)
def myfunc(first, *args, exempt=False, **kwargs):
if exempt:
return

希望这能让大家明白这个想法。这种实施可能吗?

我建议有一个args、kwargs对的列表,如下所示:

mylist = [
(['cheese', 'toast', 'bread'], {'exempt': True}),
(['bagel', 'apple', 'oatmeal'], {'exempt': True}),
]
def myfunc(first, *args, exempt=False, **kwargs):
if exempt:
return
for args, kwargs in mylist:
myfunc(*args, **kwargs)

如果您一直使用原始格式的mylist,您可以这样做,将最后一个元素整齐地分配给kwargs,将其余元素分配给args:

for *args, kwargs in mylist:
myfunc(*args, **kwargs)

但您需要非常确定最后一个元素始终是kwargsdict(或者添加代码来检查它是否是,如果不是,则替换一个空dict(。

最新更新