美文网首页
进阶学习6-装饰器/迭代器/生成器

进阶学习6-装饰器/迭代器/生成器

作者: 龙猫六六 | 来源:发表于2020-01-30 15:46 被阅读0次

总结

描述 备注
函数核心概念1 函数可以赋值给变量
函数核心概念2 函数可以作为参数传递
函数核心概念3 嵌套函数
函数核心概念4 函数可作为返回值
装饰器 不改变原函数前提下,包装函数 将修饰的原函数作为嵌套函数
迭代器 有限[i for i in range(10)] 调用next获取下一个元素
生成器 无限(i for i in range(10)) 特殊的迭代器

装饰器

装饰器的作用:在不改变原函数的前提下,对函数进行修改。即嵌套函数的

函数的4大特点

  • 函数可以作为对象赋值给变量
  • 函数可以作为参数进行传递
  • 嵌套函数,函数内定义函数
  • 函数可作为返回值,闭包

实例1

# func = func1,函数赋值给变量
def my_decorator(func):
    # func函数作为参数进行传递
    print('my_decorator')
    # 嵌套函数
    def wrapper(*args, **kwargs):
        print('wrapper')
        func(*args, **kwargs)
    #函数作为返回值
    return wrapper

@my_decorator
def func1():
    print('func1 welcome')

func1()
#######
#my_decorator
#wrapper
#func1 welcome

实例2

def repeat(num):
    print('repeat')
    def my_decorator(func):
        print('my_decorator')
        def wrapper(*args, **kwargs):
            print('wrapper')
            for i in range(num):
                func(*args, **kwargs)
        return wrapper
    return my_decorator

@repeat(3)
def func1():
    print('func1 welcome')

func1()

迭代器/生成器

  • 容器(list,dict,str,tuple,set)是可迭代对象,可迭代对象调用iter()函数得到一个迭代器。迭代器可以通过next函数获取下一个函数,从而支持遍历
  • 生成器是一种特殊的迭代器(反之不处理)。生成器相比迭代器占用个小的内存

迭代器

  • 占用内存高,一次性获取
  • 有限集合
    x=[x for x in range(10000)]

生成器

  • 占用内存小,next一次计算一次。调用 next() 函数的时候,才会生成下一个变量
  • 无限集合
    x=(x for x in range(10000))

相关文章

网友评论

      本文标题:进阶学习6-装饰器/迭代器/生成器

      本文链接:https://www.haomeiwen.com/subject/dxrithtx.html