找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2209|回复: 2

[求助] 有关生成器的问题

5

主题

6

帖子

6

积分

贫民

积分
6
johnny12cat 发表于 2018-8-12 23:20:07 | 显示全部楼层 |阅读模式
1534086772(1).png
请问:1.同一个生成器,为什么红圈1与红圈2的内存地址不一样?
          2.红圈3与红圈4有什么区别?为什么地址也不一样?
          3.我把红圈1的地址转成10进制后,为什么与红圈3、4的值都不同,个人觉得应该至少有一个相同才对啊
请大神赐教,谢谢


回复

使用道具 举报

3

主题

278

帖子

278

积分

侠客

积分
278

热心会员

uitb 发表于 2018-8-13 10:46:20 | 显示全部楼层
本帖最后由 uitb 于 2018-8-13 10:48 编辑

1、每次num()产生一个新的生成器实例,所以1、2是两个不同的生成器,只是定义方式一样,
2、num是指函数num(生成器定义)定义,而num()同上,是一个生成器的实例了,内存地址肯定不一样
3、1与3、4地址不一样,1、3不一样的原因同上第二条,1、4不同是因为每次num()就是一个新的生成器了,即同上第一条,num()与num()是两个定义方式一样的生成器,内存地址肯定不一样

ps:你上边这些内存地址不同跟是不是生成器没啥关系,换成普通函数估计更好理解
回复 支持 反对

使用道具 举报

5

主题

6

帖子

6

积分

贫民

积分
6
johnny12cat  楼主| 发表于 2018-8-13 12:53:19 | 显示全部楼层
uitb 发表于 2018-8-13 10:46
1、每次num()产生一个新的生成器实例,所以1、2是两个不同的生成器,只是定义方式一样,
2、num是指函数num ...

非常感谢,解释的很清楚,再次感谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表