通过阅读这个例子以及我对Python的渺小知识,它必须是将数组转换为字典或其他内容的快捷方式吗?
class hello:
def GET(self, name):
return render.hello(name=name)
# Another way:
#return render.hello(**locals())
答案 0 :(得分:11)
在python f(**d)
中,将字典d
中的值作为关键字参数传递给函数f
。同样,f(*a)
将数组a
中的值作为位置参数传递。
举个例子:
def f(count, msg):
for i in range(count):
print msg
使用**d
或*a
:
>>> d = {'count': 2, 'msg': "abc"}
>>> f(**d)
abc
abc
>>> a = [1, "xyz"]
>>> f(*a)
xyz
答案 1 :(得分:1)
def somefunction(keyword1, anotherkeyword):
pass
可以称为
somefunction(keyword1=something, anotherkeyword=something)
or as
di = {'keyword1' : 'something', anotherkeyword : 'something'}
somefunction(**di)
答案 2 :(得分:1)
来自Python docuemntation, 5.3.4:
如果任何关键字参数与形式参数名称不对应,则引发TypeError异常,除非存在使用语法**标识符的形式参数;在这种情况下,该形式参数接收包含多余关键字参数的字典(使用关键字作为键,参数值作为对应值),或者如果没有多余的关键字参数,则接收(新)空字典。
这也用于the power operator,在不同的背景下。
答案 3 :(得分:1)
** local()传递与调用者的本地命名空间相对应的字典。当传递带有**的函数传递一个字典时,这允许可变长度的参数列表。