day07课堂笔记
##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 多任务的选择
资源消耗不关心 要求稳定 用户多进程
资源消耗关心 多线程或者协程
多任务的网络程序 建议优先使用协程
上一篇: 面试总结之 《SpringBoot》
下一篇: 人工智能测温 “硬科技”迎接“开*”