python迭代器总结

##1. 迭代器

1.1 迭代

通过迭代器不断取出可迭代对象中的下一个元素的值 的过程

for

1.2 可迭代对象

能能被迭代的对象

from collections import Utterable

isinstance(对象, Iterable)

实现 __iter__提供迭代器

1.3 迭代器

迭代的访问 可迭代对象中的下一个元素

应用场景: 用户只需要关心如何使用迭代器访问数据 而不需要关键数据该如何访问

​ 解耦合

​ 每一种可迭代对象都会提供对应的迭代器

from collections import Iterator

isinstance(对象,Iterator)

实现

__next__提供下一个元素的值

__iter__返回自身即可 应对情况 迭代器 = iter(迭代器)

1.4 next函数 iter函数

iter函数 迭代器 = iter(可迭代对象)

​ 取出可迭代对象中提供的迭代器

next函数 下一个元素的值 = next(迭代器)

​ 通过迭代器取出下一个元素的值

2. 生成器

是一种特殊的迭代器, 支持迭代器所有的操作

2.1. 生成器表达式

​ 列表推导式[] ——> ()

​ 优点: 节约资源, 不用占用大量空间

​ 在用户需要访问数据的时候 才延迟产生

2.2 生成器函数

​ 含有yield关键字的函数 不再是普通函数 而是生成器函数

2.3 yield关键字作用

1 执行到yield会暂停当前代码执行 将后面的值返回到调用生成器代码的地方
2 当前生成器代码再次执行时 直接从上次暂停的地方继续往下执行

##3. 协程

3.1 概念

​ 协程是 用户层面的多任务调度机制 数量可以几十万

​ 进程线程是操作系统层面的多任务机制 数量受操作系统的限制

了解greenlet / yield使用协程

掌握gevent模块的使用

###3.2 gevent模式

​ 创建启动协程 协程对象 = gevent.spawn(入口, 参数列表)

​ 等待协程完成 协程对象.join()

​ 等待多个协程完成 gevent.joinall()

​ 自动切换 from gevent import monkey; monkey.patch_all()

###3.3 多任务的选择

​ 资源消耗不关心 要求稳定 用户多进程

​ 资源消耗关心 多线程或者协程

​ 多任务的网络程序 建议优先使用协程

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值