1、列表生成器:按照一定的规则生成全部的数据
结果:
2、生成器:将一个规则存放在一个对象中,在调用时才会生成数据
生成器可以认为是一个简化版的迭代器, 生成器的实现是基于函数. 在函数中使用关键字“yield” 而不是通常用的return. yield作为生成器执行的暂停恢复点, 每次调用next, 生成器函数执行到yield语句, 会挂起,并保存当前的上下文信息. 知道下一个next触发生成器继续执行.
第一种:
结果:
第二种:
结果:
3、生成器之send方法
结果:
就是send的值将yield i整体替换
4、生成器之应用多任务(协程并发)
结果:瞬间执行出结果
5、迭代器和生成器对比
迭代器 Iterator | 生成器 Generator |
---|---|
用类实现 | 用函数实现 |
迭代器类里面实现iter() 和next()函数 | 生成器使用 yield 关键字 |
每个生成器都是一个迭代器 |