png pytho process gen screen 内存 tle nac 个数
********* 生成器 ************* 在 Python 中, 这种一边循环一边计算的机制, 称为生成器 (Generator),节省大量的空间.列表生成式,当生成时元素即打印,会占用内存.一,读取生成器元素的两种方式:*l.next()
*for 循环读取;(生成器是可迭代对象);
列表生成式,当生成时元素即打印,会占用内存;
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
In[5] : l = [i
for i in range(1, 11)] In[6] : print l
Out[13]: True*for 循环读取
In[7] : h = (i
for i in range(1, 11))#将 []改为 ()可创建生成器 * )生成器是可迭代对象In[11] : from collections import Iterable#导入模块In[12] : lh = (i * *2
for i in range(3)) In[13] : isinstance(lh, Iterable)#判断
练习:生成著名的斐波拉契数列 (Fibonacci), 除第一个和第二个数外, 任意一个数都
可由前两个数相加得到
1, 1, 2, 3, 5, 8, 13, 21, 34, ...
二,*)yield 关键字 a. 如果函数里面有 yield 关键字,那么调用这个函数的结果赋给的变量为生成器
b. 当生成器 g 调用第一个 next 方法时,会运行函数,直到遇到第一个 yield 停止
c. 当调用第二个 next 方法时,会从停止的地方继续执行,知道遇到下一个 yield*)next 方法与 yield 关键字的关系 In [18]: print lh.next() #第一个 next,遇到第一个 yirld 结束,打印 1
3 三,*) 生成器的 send 方法 a. 使用 send 方法给生成器函数发送数据
first
1
In [19]: print lh.next() #第二个 next,遇到第二个 yirld 结束,打印 2
second
2
In [20]: print lh.next() #第三个 next,遇到第三个 yirld 结束,打印 3
third
b. 使用 send 方法前,必须先调用一次 next() 方法
c. 遇到下一个 yield 停止 *) 消费者 - 生产者模型
*)生成器实战应用:迷你聊天机器人
python - 高级特性
来源: http://www.bubuko.com/infodetail-2460748.html