函数,迭代器,生成器
迭代器:循环反馈的容器(集合类型)
——不同于索引取值,但也可以循环的从容器对象中从前往后逐个返回内部的值
优点:不依赖索引,完成取值
缺点:不能计算长度,不能指定位取值(只能从前往后逐一取值)
可迭代对象:内置有__iter__()方法的对象,称之为可迭代对象
迭代器对象:内置有__next__()方法的对象,称之为迭代器对象。可以通过调用_next_()方法完成取值。
#迭代器即迭代的工具,那什么是迭代呢? #迭代是一个重复的过程,每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的初始值 while True: #只是单纯地重复,因而不是迭代 print('===>') l=[1,2,3] count=0 while count < len(l): #迭代 print(l[count])
生成器
只要函数内部包含有yield关键字,那么函数名()的到的结果就是生成器,并且不会执行函数内部代码
def func(): print('====>first') yield 1 print('====>second') yield 2 print('====>third') yield 3 print('====>end') g=func() print(g) #<generator object func at 0x0000000002184360>
生成器就是迭代器
g.__iter__ g.__next__ #2、所以生成器就是迭代器,因此可以这么取值 res=next(g) print(res)
生成器对象:就是一个迭代器对象
——可以通过_next_()方法取值,得到yield关键字的返回值