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就变强大一层。使用装饰器,还能实现功能抽离,进一步实现松耦合。