【python基础】迭代器和生成器函数
1、迭代器协议: 1、迭代器协议是指:对象必须提供一个 __next__() 方法,执行该方法要么返回迭代中的下一项,要么就引起一个 StopIteration 异常,以终止迭代(只能往后走不能往前退) 2、可迭代对象: 实现了迭代器协议的对象 (如何实现:对象内部定义了一个__iter__()方法) 3、协议是一种约定,可迭代对象实现了迭代器协议,python的内部工具(如for循环,sum,min,max函数等)使用迭代器协议访问对象。 注意: iter.ls__next__() #__next__() ---->next() __next__() 是迭代器内置函数,而next() 是python内置函数,两者效果相同 字符串、列表、元组、字典、集合等 都不是可迭代对象,但是能够被for循环, for循环其实就是先把它们转化为可迭代对象( li.__iter__()或者iter(li) ),然后进行__next__()方法一个个取出 >>> a = iter([1,2,3,4,5]) >>> a <list_iterator object at 0x101402630> >>> a.__next__() 1 >>> a.__next__() 2 >>> a.__next__() 3 >>> a.__next__() 4 >>> a.__next__() 5 >>> a._