骑毛驴的男人 发表于 2021-5-10 10:49:56

a 和b的初始值分别是0和1,然后开始迭代,调用了next的魔法方法,怎么就得出最后的...

>>> class Fibs:
        def __init__(self):
                self.a = 0
                self.b = 1
        def __iter__(self):
                return self
        def __next__(self):
                self.a,self.b = self.b,self.a + self.b
                return self.a

       
>>> fibs = Fibs()
>>> for each in fibs:
        if each < 20:
                print(each)
        else:
                break

       
1
1
2
3
5
8
13

教材例子疑问
        def __init__(self):
                self.a = 0
                self.b = 1
        def __iter__(self):
                return self
        def __next__(self):
                self.a,self.b = self.b,self.a + self.b
                return self.a
这一段怎么求出来的结果不能理解,哪位大神帮忙指点下。
a 和b的初始值分别是0和1,然后开始迭代,调用了next的魔法方法,怎么就得出最后的结果了?

大胖侠 发表于 2021-5-10 12:17:09

self.a, self.b = self.b, self.a + self.b 这句是简写啊,分开写就好理解了

x = self.a # =0
self.a = self.b # =1
self.b = x + self.b # =0 + 1
页: [1]
查看完整版本: a 和b的初始值分别是0和1,然后开始迭代,调用了next的魔法方法,怎么就得出最后的...