python实战之字典传参,补充**arg

今天在工作中遇到了一个问题,就是需要在自定义函数里传一个字典类型的参数,然后在我前几篇博文讲到了一个**传参的方法,详情可以查看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的包裹传递机制的问题,在自定义函数中用**传递不确定个数和参数类型的参数,将其打包,而相应的在调用函数传参的时候就需要一个类似拆分包裹的过程,即在参数前加上**。

你可能感兴趣的:(python)