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

    科技2022-07-21  134

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