迭代器的特点:
1. 省内存
2. 惰性机制, 不访问__next__() 就没有值.
3. 只能向前. 不能反复.
生成器的特点
本质就是迭代器, 生成器函数. 就是把return换成yield
迭代器函数:
def func():
pint("真好")
return "还不错"
如果直接执行函数func() 会打印"真好"
n = func(),然后再打印n的话会打印" 真好",然后返回值"还不错"
生成器函数:
def func():
print("真好")
yield "还不错"
直接执行函数不会有任何显示.
n = func(),可以获得一个生成器对象
然后执行print(n.__next__())遇到第一个yueld会停止运行,如果继续执行会报错StopIteration
两种方式写生成器
1. 生成器函数
2. 生成器表达式
生成器的表达式(结果 for循环 if判断)