首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python中自动传递大量关键字参数

问如何在python中自动传递大量关键字参数
EN

Stack Overflow用户
提问于 2016-11-12 11:51:31
回答 2查看 1.8K关注 0票数 0

我正在调用一个函数

代码语言:javascript
复制
foo(x,y0=y[0],y1=y[1],y2=y[2],...,y<d>=y[<d>])

其中<d>是一个很大的数字,可能因调用而异。除x外,所有参数都是关键字参数。我自己没有写foo,所以我不能把y作为一个列表来传递。是否有自动将列表拆分为关键字参数的方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-12 12:06:18

首先,构建名称、值对的列表,然后将其转换为字典并将其传递给函数。

代码语言:javascript
复制
y_vals = [ 1, 2, 3, 'a', 'b', 'c' ]
arg_dict = dict(('y%d' % i, v) for i, v in enumerate(y_vals))
foo(x, **arg_dict)
票数 6
EN

Stack Overflow用户

发布于 2016-11-12 12:07:37

您可以使用**kwargs让您的函数接受任意数量的关键字参数("kwargs“意思是”关键字参数“):

代码语言:javascript
复制
>>> def print_keyword_args(**kwargs):
...     # kwargs is a dict of the keyword args passed to the function
...     for key, value in kwargs.iteritems():
...         print "%s = %s" % (key, value)

... 
>>> print_keyword_args(first_name="John", last_name="Doe")
first_name = John
last_name = Doe

您还可以在调用函数时使用**kwargs语法,方法是构造关键字参数字典并将其传递给您的函数:

代码语言:javascript
复制
>>> kwargs = {'first_name': 'Bobby', 'last_name': 'Smith'}
>>> print_keyword_args(**kwargs)
first_name = Bobby
last_name = Smith

Python教程包含了对它的工作原理的一个很好的解释,还有一些很好的例子。

若要将list转换为关键字参数,请执行以下操作:

代码语言:javascript
复制
# y is a list with arguments stored.
kwargs = {}
for arg in range(len(y)):
    kwargs['y'+str(arg)] = y[arg]

foo(**kwargs)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40562568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档