加入收藏 | 设为首页 | 会员中心 | 我要投稿 孝感站长网 (https://www.0712zz.com.cn/)- 运营、云管理、管理运维、云计算、大数据!
当前位置: 首页 > 运营中心 > 交互 > 正文

python语言之await和yield from的对比

发布时间:2022-08-25 10:22:23 所属栏目:交互 来源:互联网
导读:await和yield from对比 不同点:yield from 后面的值,要么是生成器,要么是最终为可迭代对象,而await后面只能跟async开头的方法 相同点: 都是产出结果,让出控制权,等待返回结果 例子说明 分别用await和yield from实现了等待协程完成的过程 async def re
  await和yield from对比
 
  不同点:yield from 后面的值,要么是生成器,要么是最终为可迭代对象,而await后面只能跟async开头的方法
 
  相同点: 都是产出结果,让出控制权,等待返回结果
 
  例子说明
 
  分别用await和yield from实现了等待协程完成的过程
 
  async def req1_sub(param):
  return param+10
 
 
  async def req1(param):
  res = await req1_sub(param)
  res += 100
  return res
 
 
  def req2_sub(param):
  res = yield param+10
  return res
 
 
  def req2(param):
  res = yield from req2_sub(param)
  res += 100
  return res
 
 
  def print_value(f, args):
  try:
  b = f.send(args)
  except StopIteration as e:
  print(f'{f.__name__}返回值 {e.value}')
  return e.value
  else:
  print(f'{f.__name__}接收 {b}')
  return b
 
 
  g1 = req1(1)
  print_value(g1, None)
 
 
  g2 = req2(2)
  res = print_value(g2, None)
  print_value(g2, res)
 
  '''
  结果:
  req1返回值 111
  req2接收 12
  req2返回值 112
  '''
 

(编辑:孝感站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读