标签:技术 实现 实现机制 div 开始 idt 方式 特性 ima
某个方法通过一定的算法会产生一组序列,且每次返回一个值的方式叫做生成器。
一,实现机制:
方法(函数)在每次运算时,遇到yield后,返回当前的值,并记录当前运行的状态,再下次进入时,从记录的状态开始再次进入计算。
二,特性:
(1)以yield关键字定义一个生成器函数。
(2)生成器函数返回的是一个生成器,并不是一个序列。需要通过next进行取值,值取完时会抛出StopIteration异常。
(3)可通过for ... in的迭代方式进行取值。
(4)取值方向只能向前取值,不能向后取值。
(5)每个值只能取一次,使用完毕后再次next或者for迭代时,上次的值就会被释放。
三,应用场景:
对于会产生一个较大序列的函数,如果每次值访问其中一个或者几个值进行处理,处理完后不在需要该数据时,使用生成器。
四,优势:
(1)对于大数据处理,避免了开辟较大的空间存储序列数。
(2)对于较大的计算,每产生一个数据后就返回,缩短响应时间。
五,定义方式:
(1) 元组迭代器生产的数据为生成器
(2)通过yield关键字定义的函数
# (1)通过元组推导式生产生产器 t = (x*x for x in range(5)) # 产生一个生产器 print type(t) # <type ‘generator‘> # 通过for ... in 迭代器访问 for item in t: print item #(2)通过生产器函数生成生成器 def yield_test(n): d = 10 for i in range(n): yield i + d d += 10 # 通next函数访问 item = yield_test(3) print item.next() print item.next() print item.next()
标签:技术 实现 实现机制 div 开始 idt 方式 特性 ima
原文地址:https://www.cnblogs.com/lwp-boy/p/13585807.html