[英]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.