生成器优势
1. 节省内存
2. 其可中断函数循环做些其他事情,同时记住足够的数据随时继续函数循环
创建
1. 生成器表达式
列表生成式 [ ] 换成 ( ) 即可
>>> a = [i for i in range(10)]
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a = (i for i in range(10))
>>> a
<generator object <genexpr> at 0x7f5fd243cbf8>
>>> a.__next__()
0
>>> next(a)
1
2. 生成器函数
1. 函数使用yield,就变成了生成器
2. 生成器中return代表终止生成器
3. next函数
4. send函数:发送信息到生成器,继续执行
>>> def count(threshold=10):
... while True:
... i = yield
... if i < threshlod: print(i)
... else: break
... return 'done'
>>> c = count(10)
>>> c.send(2)
2
>>>