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