Python协程入门:如何通过生成器实现协程?

2026-06-11 07:281阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计322个文字,预计阅读时间需要2分钟。

Python协程入门:如何通过生成器实现协程?

列表中那些占用内存长度不同的,是生成器在调用过程中的逐步占用内存空间,因为此方法有着很大的优势,一个斐波那契数列的例子如下:def myfibbo(num): a, b=0, 1 count=0 while count

和列表那种一下占据长度为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))

输出结果:

Python协程入门:如何通过生成器实现协程?

None1程劲None2昌仔None5劲儿弟弟None13陈培昌None34

标签:实现

本文共计322个文字,预计阅读时间需要2分钟。

Python协程入门:如何通过生成器实现协程?

列表中那些占用内存长度不同的,是生成器在调用过程中的逐步占用内存空间,因为此方法有着很大的优势,一个斐波那契数列的例子如下:def myfibbo(num): a, b=0, 1 count=0 while count

和列表那种一下占据长度为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))

输出结果:

Python协程入门:如何通过生成器实现协程?

None1程劲None2昌仔None5劲儿弟弟None13陈培昌None34

标签:实现