簡體   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