我想生成一个大列表,传递给函数。其中一部分是传递关键字参数,但我似乎无法让它发挥作用,因为关键字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)
但您需要非常确定最后一个元素始终是kwargs
dict(或者添加代码来检查它是否是,如果不是,则替换一个空dict(。