#可迭代协议 只要含有__iter__方法的都是可迭代的
#迭代器协议 内部含有__next__和__iter__方法的就是迭代器
#一个可迭代对象执行了__iter__()之后的返回值就是一个迭代器
#for循环其实就是在使用迭代器
#当我们遇到一个新的变量,不确定能不能for循环的时候,就判断它是否可迭代
#迭代器的好处:
# 从容器类型中一个一个的取值,会把所有的值都取到。
# 节省内存空间
#迭代器并不会在内存中再占用一大块内存,
# 而是随着循环 每次返回一个
# 每次next返回一个元素
#生成器函数 —— 本质上就是我们自己写得函数
#只要含有yield关键字的函数都是生成器函数
#yield不能和return共用且需要写在函数内
#执行之后会得到一个生成器作为返回值