鱼C论坛

 找回密码
 立即注册
查看: 877|回复: 4

[已解决]python48讲里的迭代器疑问

[复制链接]
发表于 2018-5-12 16:24:38 | 显示全部楼层 |阅读模式

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

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

x
  1. class Fibs:
  2.         def __init__(self,n = 10):
  3.                 self.a = 0
  4.                 self.b = 1
  5.                 self.n = n
  6.         def __iter__(self):
  7.                 return self
  8.         def __next__(self):
  9.                 self.a,self.b = self.b,self.a + self.b
  10.                 if self.a > self.n:
  11.                         raise StopIteration
  12.                 return self.a
  13. fib = Fibs()
  14. for each in fib:
  15.         print(each)
复制代码

这段代码的输出为1,1,2,3,5,8
为什么第一个输出的是1呢?
当我把return self.a换成rerun self.b后就输出1,2,3,5,8,13第一个迭代的不应该是初始值吗?
最佳答案
2018-5-12 20:04:34
thexiosi 发表于 2018-5-12 17:12
好东东,太感谢了 :)

没事,好东西共享。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-5-12 16:42:10 | 显示全部楼层
哦哦我搞明白了,但是这里的__iter__(self)  return self里面的return self是用作用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-12 16:58:37 | 显示全部楼层
http://www.pythontutor.com/visualize.html#mode=edit
值得拥有,看一看执行过程。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-12 17:12:41 | 显示全部楼层
新手·ing 发表于 2018-5-12 16:58
http://www.pythontutor.com/visualize.html#mode=edit
值得拥有,看一看执行过程。

好东东,太感谢了 :)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-12 20:04:34 | 显示全部楼层    本楼为最佳答案   
thexiosi 发表于 2018-5-12 17:12
好东东,太感谢了 :)

没事,好东西共享。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 13:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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