码迷,mamicode.com
首页 > 编程语言 > 详细

python协程初步---一个生成器的实现

时间:2019-10-04 16:39:20      阅读:66      评论:0      收藏:0      [点我收藏+]

标签:其他   例子   生成   none   font   初步   一个   size   内存   

和列表那种一下占据长度为n的内存空间不同的是,生成器在调用的过程中逐步占据内存空间,因此有着很大的优势

  • 一个斐波纳契数列的例子
def myfibbo(num):
    a,b=0,1
    count=0
    while count<num:
        a,b=a+b,a
        print(b)
        count+=1

运行 :myfibbo(10)

  • 一个生成器版本的例子
def myfibbo(num):
    a,b=0,1
    count=0
    while count<num:
        a,b=a+b,a
        ret = yield b#代码执行到yield处,就会“绕道”执行下面的代码
        print(ret)
        count+=1

s = myfibbo(10)
s.send(None)#第一次传入值时要发送None,因为第一次b这个变量已经承载了1这个值,而无法接收其他值,只能传入None
print(next(s))
s.send("程劲")#执行到yield b时,由于b正在计算,send的值替代了b作为结果返回给变量ret,b计算完成后返回给ret
print(next(s))
s.send("昌仔")
print(next(s))
s.send("劲儿弟弟")
print(next(s))
s.send("陈培昌")
print(next(s))

输出结果:

None
1
程劲
None
2
昌仔
None
5
劲儿弟弟
None
13
陈培昌
None
34

 

python协程初步---一个生成器的实现

标签:其他   例子   生成   none   font   初步   一个   size   内存   

原文地址:https://www.cnblogs.com/saintdingspage/p/11622290.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!