鱼C论坛

 找回密码
 立即注册
查看: 1140|回复: 2

[已解决]Python第13讲元组课后习题生成器

[复制链接]
发表于 2020-6-29 10:47:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
>>> x = (i*i for i in range (10))
>>> type(x)
<class 'generator'>
>>> x._next_()
Traceback (most recent call last):
  File "<pyshell#19>", line 1, in <module>
    x._next_()
AttributeError: 'generator' object has no attribute '_next_'
为什么>>> x._next_()会报错

>>> tuple1 = (x**2 for x in range(10))
>>> tuple1.__next__()
0
这个怎么就不报错
最佳答案
2020-6-29 10:51:56
本帖最后由 Twilight6 于 2020-6-29 10:54 编辑



第一个你使用成了 _next_ 你打成了单下划线

而对第二个使用 __next__ 你打的是双下划线

双下划线是正确用法,单下划线错误用法

而且 next 函数的用法是 next(x) 而不是 x.next()

如图所示

如图所示
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-29 10:51:56 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Twilight6 于 2020-6-29 10:54 编辑



第一个你使用成了 _next_ 你打成了单下划线

而对第二个使用 __next__ 你打的是双下划线

双下划线是正确用法,单下划线错误用法

而且 next 函数的用法是 next(x) 而不是 x.next()

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-29 13:02:26 | 显示全部楼层
第一个下划线少打了粗心...
i*i 与 i**2 都是2次方,可以把第一个重新打一遍,下划线多输一个。
我的类和对象,魔法方法没选好,得补补了...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-20 07:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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