繁体   English   中英

函数参数解包错误

[英]Function argument unpacking error

看这个例子(使用python 2.7.6):

>>> def func(a, b, c, d):  
    print a, b, c, d

>>> func(1, c = 3, *(2,), **{'d':4})
1 2 3 4

到这里,这很好。 但是,为什么以下调用失败?

>>> func(1, b = 3, *(2,), **{'d':4})

Traceback (most recent call last):
  File "<pyshell#69>", line 1, in <module>
    func(1, b = 3, *(2,), **{'d':4})
TypeError: func() got multiple values for keyword argument 'b'

用另一个函数签名可以更好地理解

>>> def func(*args, **kw):
        print(args, kw)


>>> func(1, b = 3, *(2,), **{'d':4})
(1, 2) {'b': 3, 'd': 4}

因此,位置参数和关键字参数也被放在一起。

使用原始签名,这意味着将23都分配给b ,这是无效的。

PS:因为简单的元组拆包不提供名称,所以这些值将被视为位置参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM