Python表示法或操作“**”

时间:2012-03-09 18:11:15

标签: python

我看到了以下代码:

def __init__(self, fn, **kw):
     [setattr(self,k,v) for (k,v) in kw.items()]
     ......

输入参数**kw是什么意思?

4 个答案:

答案 0 :(得分:5)

kwdict映射keyword argument名称绑定到其值。

尝试拨打

def return_kwargs(**kw):
    return kw

return_kwargs(foo=1, bar="2", baz="hamspamspam")

答案 1 :(得分:1)

假设您有dict kw = {'a':1,'b':2},则调用myfunction(**kw)相当于调用myfunction(a=1,b=2)

答案 2 :(得分:1)

这种特殊结构意味着构造函数的所有关键字参数最终都将作为对象属性。

foo = Foo( func, bar = 1, baz = "aa" )

这将创建一个对象,其属性“bar”设置为1,“baz”设置为“aa”

答案 3 :(得分:1)

在函数内部,kw是一个字典,其中包含您为函数提供的所有keyword = value参数:

def demo(**kw):
    print kw

demo(a=1, b="hello")

运行上面的内容,它将显示一个包含两个键a和b的字典。因此,它可以作为接受您在调用函数时决定使用的任何关键字参数的方法。

这就是它的作用。为什么有人想这样做?也许在调用另一个函数的函数中(作为单独的参数给出),**kw是为第二个函数保存选项。