迭代器,一个实现了 --iter-- 方法 和 --next-- 方法的对象,迭代器同时也是一个可迭代的对象
python 中的列表、元组、字符是迭代对象,如果实现了iter方法和next方法 然后他就是迭代器
for ....in.. ..循环本质就是先通过iter()函数获取一个可迭代对象的迭代器,然后对获取的迭代器不断调用next()方法来获取下一个值
生成器是一种特殊的迭代器,只要在函数中有 yield(i:ou d) 关键字就称为生成器,当程序代码运行到 关键字 yield 程序就会暂停
关键字 yield 的两个作用,1)保存当前的运行状态,然后暂停执行 2)将 yeild 关键字后面表达式的值作为返回值返回,起到 return 的作用 这是我们可以使用 next()函数 和 send()函数唤醒,两个唤醒函数的区别在在于,send()函数可以在唤醒的同时向断点处传入一个附加的数据
生成器的主要作用是为了减少内存的占用,比如用生成器生成大量数据的时候,因为生成器封装了算法,每次调用再去调用算法,这样就起到了节省内存的作用
创建一个生成器,1)我们只要把一个列表生成式的 【】 改成 ()就可以了
2) 在函数中添加 yield 关键字