如何传递kwargs列表?
我可以把一堆关键字参数(kwargs)传给一个方法,以简化代码吗?我想做的是这个:
def method(**kwargs):
#do something
keywords = (keyword1 = 'foo', keyword2 = 'bar')
method(keywords)
4 个回答
7
你是说字典吗?当然可以:
def method(**kwargs):
#do something
keywords = {keyword1: 'foo', keyword2: 'bar'}
method(**keywords)
15
正如其他人提到的,你可以通过传递一个字典来实现你想要的效果。构建字典的方法有很多种。其中一种可以保持你尝试的 关键字=值
风格的方法是使用内置的 dict。
keywords = dict(keyword1 = 'foo', keyword2 = 'bar')
注意 dict
的灵活性;所有这些方法都会产生相同的结果:
>>> kw1 = dict(keyword1 = 'foo', keyword2 = 'bar')
>>> kw2 = dict({'keyword1':'foo', 'keyword2':'bar'})
>>> kw3 = dict([['keyword1', 'foo'], ['keyword2', 'bar']])
>>> kw4 = dict(zip(('keyword1', 'keyword2'), ('foo', 'bar')))
>>> assert kw1 == kw2 == kw3 == kw4
>>>
196
是的。你可以这样做:
def method(**kwargs):
print kwargs
keywords = {'keyword1': 'foo', 'keyword2': 'bar'}
method(keyword1='foo', keyword2='bar')
method(**keywords)
在Python中运行这个可以确认它们的结果是完全一样的:
{'keyword2': 'bar', 'keyword1': 'foo'}
{'keyword2': 'bar', 'keyword1': 'foo'}