Python表示法或操作“**”
我看到了以下代码:Python表示法或操作“**”,python,Python,我看到了以下代码: def __init__(self, fn, **kw): [setattr(self,k,v) for (k,v) in kw.items()] ...... 输入参数**kw是什么意思?kw绑定到一个dict,将名称映射到它们的值 试着打电话 def return_kwargs(**kw): return kw 作为return_kwargsfoo=1、bar=2、baz=hamspamspam。kw绑定到一个dict,将名称映射到它们的值
def __init__(self, fn, **kw):
[setattr(self,k,v) for (k,v) in kw.items()]
......
输入参数**kw是什么意思?kw绑定到一个dict,将名称映射到它们的值
试着打电话
def return_kwargs(**kw):
return kw
作为return_kwargsfoo=1、bar=2、baz=hamspamspam。kw绑定到一个dict,将名称映射到它们的值
试着打电话
def return_kwargs(**kw):
return kw
作为return_kwargsfoo=1,bar=2,baz=hamspamspam。假设您有一个dict kw={'a':1,'b':2},那么调用myfunction**kw相当于调用myfunction=1,b=2。假设您有一个dict kw={'a':1,'b':2},那么调用myfunction**kw相当于调用myfunction=1,b=2。这个特殊的构造意味着构造函数的所有关键字参数最终都将作为对象属性
foo = Foo( func, bar = 1, baz = "aa" )
这将创建一个属性栏设置为1、baz设置为aa的对象。这个特殊的构造意味着构造函数的所有关键字参数最终都将作为对象属性
foo = Foo( func, bar = 1, baz = "aa" )
这将创建一个属性栏设置为1、baz设置为aa的对象。在函数中,kw是一个字典,包含您为函数提供的所有关键字=值参数:
def demo(**kw):
print kw
demo(a=1, b="hello")
运行上面的命令,它将显示一个带有两个键a和b的字典。因此,它可以作为一种方式来接受您在调用函数时决定使用的任何关键字参数
它就是这样做的。为什么会有人想这么做?可能在调用另一个作为单独参数给出的函数的函数中,**kw用于保存第二个函数的选项。在函数中,kw是一个字典,包含您为函数提供的所有关键字=值参数:
def demo(**kw):
print kw
demo(a=1, b="hello")
运行上面的命令,它将显示一个带有两个键a和b的字典。因此,它可以作为一种方式来接受您在调用函数时决定使用的任何关键字参数
它就是这样做的。为什么会有人想这么做?也许在一个函数中,调用另一个作为单独参数给出的函数,**kw将保留第二个函数的选项。。假设类的名称是Foo。然后我可以创建为:F=Foo,a,b,c,d,e。那么kw=={b:c,d:e}???@YanZhu:不,因为你a不创建Foo,b如果你是指Fooa,b,c,d,e,它不传递关键字参数,而是传递值a到e。阅读我发布的链接。假设类的名称是Foo。然后我可以创建为:F=Foo,a,b,c,d,e。那么kw=={b:c,d:e}???@YanZhu:不,因为你a不创建Foo,b如果你是指Fooa,b,c,d,e,它不传递关键字参数,而是传递值a到e。阅读我发布的链接。你是对的,但他只是问**kw部分。属性魔法是由setattr完成的。你是对的,但他只是问**kw部分。属性魔术由setattr完成。这与在函数声明中使用**kw相反。当然,这种相似性并非偶然。这与在函数声明中使用**kw相反。当然,这种相似性并非偶然。