生成器和生成器函数以及各类推导式

1. 生成器
本质就是迭代器.
一个一个的建立对象
建立生成器的方式:
1. 生成器函数
2. 经过生成器表达式来获取生成器
3. 类型转换(看不到)
2. 生成器函数 (重点)
生成器函数中包含 yield , 返回数据和return差很少.
return会当即结束这个函数的执行
yield 能够分段的执行一个函数函数

生成器函数在执行的时候返回生成器. 而不是直接执行此函数对象

能向下执行的两个条件:
__next__(), 执行到下一个yield
send(), 执行到下一个yield, 给上一个yield位置传值内存

全部的生成器都是迭代器均可以直接使用for循环
均可以使用list()函数来获取到生成器内全部的数据for循环

生成器中记录的是代码而不是函数的运行
def func():
print("个人天哪 ")循环

yield "宝宝"yield

gen = func() # 建立生成器. 此时运行会把生成器函数中的代码记录在内存
当执行到__next__(), 运行此空间中的代码, 运行到yield结束.迭代器

优势: 节省内存, 生成器自己就是代码. 几乎不占用内存
特色: 惰性机制, 只能向前. 不能反复next

3. 各类推导式 (诡异)
列表推导式 [结果 for循环 if]
字典推导式 {结果(k:v) for循环 if}
集合推导式 {结果(k) for循环 if}数据

 

4. 生成器表达式 (重点)
(结果 for循环 if)生成器

相关文章
相关标签/搜索