簡體   English   中英

將字典傳遞給帶有解包參數的函數

[英]Passing a dictionary to a function with unpacking argument

下面的代碼片段給了我這個錯誤TypeError: pop() argument after ** must be a mapping, not tuple

class a():
    data={'a':'aaa','b':'bbb','c':'ccc'}
    def pop(self, key, **args):
        return self.data.pop(key, **args)

b=a()
print(b.pop('a',{'b':'bbb'}))

但是當我用單*替換雙**時,這很好用。 根據我的理解,如果我們傳遞字典,我們應該有雙** 在這種情況下,傳遞的第二個參數是字典{'b':'bbb'} 那么它是如何在第一種情況下拋出錯誤而不是在第二種情況下拋出錯誤的呢?

class a():
    data={'a':'aaa','b':'bbb','c':'ccc'}
    def pop(self, key, *args):
        return self.data.pop(key, *args)

b=a()
print(b.pop('a',{'b':'bbb'})

如果您希望將字典用作關鍵字參數,則還必須在調用中使用**

print(b.pop('a',**{'b':'bbb'}))

但我不認為這真的是你想要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM