美文网首页
进阶学习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