四:迭代器生成器
一:迭代器 暂时不涉及到自定义迭代器,涉及到了再补,暂时知道for循环的原理就可以了. 1有__iter__就是可迭代的,也叫可迭代协议 2双下方法:c语言写好了的内置方法,可以用不止一种的方式调用 3迭代取值的工具 4可迭代对象执行__iter__得到的返回值就是迭代器. 5可以把它看作数据流,只能前进不能后退,迭代到头了就会从内存消失 6如果还有__next__方法,那么就是迭代器了,光有__next__就什么都不是 7 迭代器的另一个好处是节省内存,不会一次全在内存中生成,而是随着循环每次生成一个 8只关心当前数据,和下一个数据的位置,其他数据没有在内存当中 9迭代器一定是可迭代的 10很少自己写迭代器,都是用for去循环可迭代对象,当到头没有数据报StopIteration异常,for循环完美的处理了这个异常. 11.for循环的本质就是通过__iter__拿到迭代器,然后不断调用__next__获取数值,直到报异常并处理掉 迭代器更多的是从已经存在的数据结构中获取值,就算没有索引也可以不断获取后面的数据,迭代器知道这些就可以了. 迭代器几乎不会自己定义 class Test: pass test = Test() for i in test: print(i) #TypeError: 'Test' object is not iterable for遍历不可迭代对象报错