今天在工作中遇到了一个问题,就是需要在自定义函数里传一个字典类型的参数,然后在我前几篇博文讲到了一个**传参的方法,详情可以查看https://blog.csdn.net/rodger_snow/article/details/85986236
但是遇到了一个新的问题,运行代码如下
dic={"m"=1,"n"=2,"q"=3}
def dics(**qwe):
print qwe
dics(dic)
可以看到dic是字典类型,而dics中**qwe也确实是传的字典,可是运行后发现系统会报错:python TypeError: unhashable type: 'dict' 。即传递类型不正确,dict类型不能用dict作为key值,无法hash。
然后查询了别人的博客,发现需要改成
dic={"m"=1,"n"=2,"q"=3}
def dics(**qwe):
print qwe
dics(**dic)
其实就是python的包裹传递机制的问题,在自定义函数中用**传递不确定个数和参数类型的参数,将其打包,而相应的在调用函数传参的时候就需要一个类似拆分包裹的过程,即在参数前加上**。