day013 迭代器和生成器
一、迭代器(iterator)
迭代器协议 —— 内部含有__next__和__iter__方法的就是迭代器。for循环其实就是在使用迭代器。
迭代器的好处:
从容器类型中一个一个的取值,会把所有的值都取到。
节省内存空间
迭代器并不会在内存中再占用一大块内存,
而是随着循环 每次生成一个
每次next每次给我一个
二、生成器(genetator)
生成器本质是迭代器的一种,是我们自己写的函数
1 def generator(): 2 print(1) 3 return 'a' 4 5 ret = generator() 6 print(ret)
只要含有yield关键字的函数都是生成器函数, 执行之后会得到一个生成器作为返回值(个人理解:yeild相当于return 和 下一次执行标记)
yield不能和return共用且需要写在函数内
特点:
调用函数的之后函数不执行,返回一个生成器
每次调用next方法的时候会取到一个值
直到取完最后一个,在执行next会报错
从生成器中取值的几个方法
next
for
数据类型的强制转换 : 占用内存

浙公网安备 33010602011771号