Python生成器和协程 学习笔记

Python生成器和协程

什么是生成器

  1. 可以生成值的函数
  2. 当一个函数有了yield关键字就成了生成器
  3. 可以挂起执行并保持当前执行状态的
def my_gen():
    yield 'first'
    yield 'second'

gen = my_gen()
print(next(gen))
print(next(gen))

基于生成器的协程

注:Python3前之前没有原生协程,只有基于生成器的协程
注:Python3.5后开始引入 async/await 支持原生协程

  1. 生成器可以通过yield暂停执行和产出数据
  2. 同时支持send()向生成器发送数据和throw()向生成器抛出异常

协程的注意点:

  1. 协程需要send(None)或者next(gen)来预激才能启动
  2. 在yield处协程会暂停执行
  3. 单独的yield value会把产出值给调用方
  4. 通过send发送值,值会赋予给yield的的左边变量
  5. 协程完成后会抛出StopIteration异常
发布了15 篇原创文章 · 获赞 4 · 访问量 1037

猜你喜欢

转载自blog.csdn.net/qq_37316153/article/details/104251724