问题描述
下面的代码片段给了我这个错误 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',*args):
return self.data.pop(key,*args)
b=a()
print(b.pop('a',{'b':'bbb'})
解决方法
如果您希望将字典用作关键字参数,则还必须在调用中使用 **
:
print(b.pop('a',**{'b':'bbb'}))
但我不认为这真的是你想要的。