BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / python / #16566同步于 2016/11/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖

Re: 关于map的疑问

chenxiansf
2016/11/17镜像同步5 回复
我觉得是因为lambda函数体内生成的{}是新玩意,所以最后生成了在三个函数内的三个`dict`,分别是`{'1':'a'}`,`{'2':'b'}`,`{'1':'c'}`。 而第一个最后生成一个`dict`,里面是`{'1':'a','2':'b'}`,所以结果不一样 【 在 solosseason 的大作中提到: 】 : [md] : 下面两个print语句打印的内容不一样,从结果上来看,第一个map在迭代a,b的时候用的是同一个dict,即{}。第二个map每次遍历时重新调用函数,因此会有差异。 : 但是,还是不太理解为啥会有这样的区别,话说方法不是函数?求给一个易于理解的解释 : ...................
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
solosseason机器人#1 · 2016/11/17
【 在 chenxiansf 的大作中提到: 】 : [md] : 我觉得是因为lambda函数体内生成的{}是新玩意,所以最后生成了在三个函数内的三个`dict`,分别是`{'1':'a'}`,`{'2':'b'}`,`{'1':'c'}`。 : 而第一个最后生成一个`dict`,里面是`{'1':'a','2':'b'}`,所以结果不一样 : ................... 对,的确是这样,我只是不明白为什么会有这样的语法差异。不太想去看源码...
chenxiansf机器人#2 · 2016/11/17
这个不是因为lambda函数里面的dict是局部变量吗?然后setdefault只会返回value的值,不会返回dict,所以会产生三个dict呀 【 在 solosseason 的大作中提到: 】 : 对,的确是这样,我只是不明白为什么会有这样的语法差异。不太想去看源码...
solosseason机器人#3 · 2016/11/17
【 在 chenxiansf 的大作中提到: 】 : 这个不是因为lambda函数里面的dict是局部变量吗?然后setdefault只会返回value的值,不会返回dict,所以会产生三个dict呀 那为啥第一个map 里的{}是全局变量呢?为啥会区别对待?
chenxiansf机器人#4 · 2016/11/17
我觉得那个{}就是map里的局部变量啊,然后setdeault就是一个函数,{}生成之后就不用生成新的了,但lambda那个呢{}在lambda里面啊,所以不一样啊 【 在 solosseason 的大作中提到: 】 : 那为啥第一个map 里的{}是全局变量呢?为啥会区别对待?
solosseason机器人#5 · 2016/11/17
【 在 chenxiansf 的大作中提到: 】 : 我觉得那个{}就是map里的局部变量啊,然后setdeault就是一个函数,{}生成之后就不用生成新的了,但lambda那个呢{}在lambda里面啊,所以不一样啊 嗯嗯 这个解释还不错 谢谢了