【面试Python基础刷题】python迭代器、生成器、装饰器

1. 迭代器

参考

  1. 什么是迭代器:
  • 迭代器,英文 Iterator,它首先是个对象,其次它是访问可迭代序列(Iterable)的一种方式。通常其从序列的第一个元素开始访问,直到所有的元素都被访问才结束。

  • 迭代器又是一个特殊的对象,特殊在于它必须实现两个方法: __ iter__和__next__.

  1. 迭代器的几个特点:
  • 是有去无回的,迭代器只能前进不能回退!也就是说一旦迭代结束,要想再使用此迭代器对象从头开始遍历元素,将是不可行的!
  • 迭代器无需提前知道整个列表的所有元素,
  • 无需加载所有元素到RAM中尽而它是节省内存的(memory-efficient).

2. 生成器

参考

  • 生成器对象(generator object)一定也是迭代器对象(Iterator object)
    创建生成器的几种方法
  • 各种生成式子
  • 使用关键字 yield. yield出现在一个函数中,运行到yield处,返回的对象便是生成器对象(generator object).
  1. yield 是一个特殊的return, 它返回一个生成器对象。
  2. 要想精通yield,你必须首先搞清楚一点:

当你调用带有yield的函数时,函数并没有执行任何一行,只是返回一个生成器对象

3. 装饰器

参考
使用装饰器很简单,@+自定义装饰器装饰要想装饰的函数。

  • 它的价值在于为原函数f增加一些行为,前提必须不能破坏函数f,所以肯定不能改变f的内部结构,所以只能在调用f前后定义一些行为。
  • 上面原函数f不仅能被一个装饰器修饰,还能被n多个装饰器修饰。
    层叠多一层,原函数f就变强大一层。使用装饰器,还能实现功能抽离,进一步实现松耦合。

相关文章: