15.高级语法(7)

迭代器

  • 可迭代:直接作用于for循环的变量
  • 迭代器:可作用于for循环,还可以被next调用
  • isinstance判断
  • iterable和iterator可以转换
    • 通过iter函数

生成器

  • generator
  • 包含yield
  • 遇到yield返回,并且记住当前位置,下一次执行从上一次返回的位置
  • next()调用
L = [x*x for x in range(5)]
g = (x*x for x in range(5))

print(type(L))
print(type(g))
<class 'list'>
<class 'generator'>

协程

  • 是为非抢占式多任务产生子程序的计算机程序组件,协程允许不同入口点在不同位置暂停或开始执行程序,可以理解成一个生成器。
  • 协程实现:
    • yield返回
    • send调用
  • 协程的四个状态
    • inspect.getgeneratorstate(…):函数确定,返回以下字段中的一个
    • GEN_GREATE:等待开始执行
    • GEN_RUNNING:解释器正在执行
    • GEN_SUSPENED:在yield表达式处暂停
    • GEN_CLOSED:执行结束
    • NXET预激(prime)
  • 协程终止
    • 协程终止未处理的异常会向上冒泡至触发者
    • 终止协程的一种方式:发送哨兵值(None、Ellipse等)
  • yield from
    • 调用协程为了得到返回值,协程必须正常终止
    • 生成器正常终止会发出StopInteration异常,异常对象的value值属性保存到返回值
    • yield from从内部捕获StopInteration异常
    • 委派生成器
      • 包含yield from 生成器函数
      • 在yield from表达式的地方暂停,调用者可以直接把数据发给子生成器
      • 子生成器再把产出的值发送给调用者
      • 子生成器最后,解释器会抛出StopInteration异常,并且把返回值附加到异常对象上

asyncio消息循环

  • 创建消息循环
  • 将协程导入
  • 关闭消息循环

async/await

aiohttp

  • asyncio实现单线程的并发io,客户端用处不大
  • 在服务端可以实现asyncio+coruntine,由于http是异步操作
  • asyncio实现了tcp,udp,ssl等协议
  • aiohttp是用asyncio实现的http框架

concurrent

  • futures
  • map函数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明致成

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值