01.生成器
1.1 什么是生成器?(What)
- 生成器就是一个特殊的迭代器
- 一个有yield关键字的函数就是一个生成器
- 生成器是这样一个函数,它记住上一次返回时在函数体中的位置。
- 对生成器函数的第二次(或第 n 次)调用跳转至该函数中间,而上次调用的所有局部变量都保持不变。
1 | def test(): |
1.2 生成器哪些场景应用?(Where)
-
生成器是一个概念,我们平常写代码可能用的并不多,但是python源码大量使用
-
比如我们tornado框架就是基于 生成器+协程
-
在我们代码中使用举例
-
比如我们要生成一百万个数据,如果用生成器非常节省空间,用列表浪费大量空间
1 | import time |
1.3 为什么使用生成器
- 节省空间
- 高效
02.迭代器
2.1 什么是迭代器(W)
- 迭代器是访问集合内元素的一种方法
- 总是从集合内第一个元素访问,直到所有元素都被访问过结束,当调用 __next__而元素返回会引发一个,StopIteration异常
- 有两个方法:_iter_ _next_
- _iter_ : 返回迭代器自身
- _next_: 返回下一个元素
__END__