python迭代器、生成器、装饰器

迭代器:
可以记住遍历位置的对象,从集合的第一个元素开始访问,直到最后一个访问结束,迭代只能向前,不能向后。
一个类实现iternext即可认为是迭代器,通过iter()方法可以返回一个迭代器对象

class Fibonacci:
    def __init__(self):
        self.a = 0
        self.b = 1
    def __iter__(self):
        return self

    def __next__(self):
        self.a, self.b = self.b, self.a+self.b
        return self.a

生成器:
使用yield的函数即是生成器,它也返回一个迭代器对象,只可进行迭代操作。
运行生成器过程中,每次执行到yield时,程序会暂停并保存运行信息,并输出yield的值,待下次执行next()时,会从上次中止的位置继续执行

def gene_test(n):
    a, b, i = 0, 1, 1
    while i <= n:
        a, b = b, a+b
        yield a
        i += 1

装饰器:
在不改变被装饰函数的基础上,给被装饰的函数添加额外的功能
装饰器函数的入参为被装饰函数的名字,而后通过闭包函数装饰被装饰的函数,装饰器函数返回闭包函数的名称;被装饰的函数可使用语法糖的形式使用装饰器

def deco_test(func):
    def inner_test():
        print("已被装饰")
        func()
    return inner_test

@deco_test
def test():
    print("我是原始函数返回的值")

你可能感兴趣的:(python迭代器、生成器、装饰器)