1. 迭代器
- 什么是迭代器:
-
迭代器,英文 Iterator,它首先是个对象,其次它是访问可迭代序列(Iterable)的一种方式。通常其从序列的第一个元素开始访问,直到所有的元素都被访问才结束。
-
迭代器又是一个特殊的对象,特殊在于它必须实现两个方法: __ iter__和__next__.
- 迭代器的几个特点:
- 是有去无回的,迭代器只能前进不能回退!也就是说一旦迭代结束,要想再使用此迭代器对象从头开始遍历元素,将是不可行的!
- 迭代器无需提前知道整个列表的所有元素,
- 无需加载所有元素到RAM中尽而它是节省内存的(memory-efficient).
2. 生成器
- 生成器对象(generator object)一定也是迭代器对象(Iterator object)
创建生成器的几种方法 - 各种生成式子
- 使用关键字 yield. yield出现在一个函数中,运行到yield处,返回的对象便是生成器对象(generator object).
yield 是一个特殊的return, 它返回一个生成器对象。- 要想精通yield,你必须首先搞清楚一点:
当你调用带有yield的函数时,函数并没有执行任何一行,只是返回一个生成器对象
3. 装饰器
参考
使用装饰器很简单,@+自定义装饰器装饰要想装饰的函数。
- 它的价值在于为原函数f增加一些行为,前提必须不能破坏函数f,所以肯定不能改变f的内部结构,所以只能在调用f前后定义一些行为。
- 上面原函数f不仅能被一个装饰器修饰,还能被n多个装饰器修饰。
层叠多一层,原函数f就变强大一层。使用装饰器,还能实现功能抽离,进一步实现松耦合。