Python-生成器

列表表达式中[]更换为(),即可成为生成器,只适用于数据量较小时;

g = (x * x for x in range(10))

普通函数中使用yield关键字,即可转化为生成器函数,但无法直接调用,可在for中使用。

def odd(): n=1 while True: yield n n+=2

odd_num = odd()

count = 0

for o in odd_num: if count >=5: break print(o) count +=1

yield与return的区别:遇到yield X时就返回迭代值X,下次调用时从yield X 的下一句开始执行。

在一个生成器中,如果没有return,则默认执行到函数完毕时返回StopIteration;

如果遇到return,如果在执行过程中 return,则直接抛出 StopIteration 终止迭代。

如果在return后返回一个值,那么这个值为StopIteration异常的说明,不是程序的返回值。

 使用生成器函数对变量复制,变量为生成器的地址,普通函数对变量复制为调用函数后返回值

 

 

posted @ 2018-10-31 09:34  kang09  阅读(112)  评论(0编辑  收藏  举报