一 . 1.迭代器 : __iter__( ) __next__( )
生成器 :本质就是迭代器,两种方式写生成器 (1)生成器函数 (2)生成器表达式
2.生成器函数:函数内部由yield. yield返回 - >return ,yield可以把函数分段执行,生成器函数被调用的时候,返回生成器。
def func ( ):
yield
g = func ( ) ---得到生成器
生成器的用法和迭代器基本一致,__next__( )开始执行生成器,执行到yield.知道没有yield,抛出StopIteration
send ( ) 可以给上一个yield传值
(1)省内存 (2)惰性机制,不访问 __next__( )就没有值 (3)只能向前,不能反复
二 . 各种推导式
1.列表推导式 [ 结果 for 循环 if 判断
2.字典推导式 { key : value for循环 if 判断 }
3.集合推导式 { key for 循环 if 判断}
三 . 生成器表达式(难点)
( 结果 for 循环 if 判断)
惰性机制 ,不访问__next__( ) 就没有值
只能向前,不能反复