• python-闭包函数、装饰器、迭代器、生成器


    1、闭包函数

    闭包函数有三个特性:

    1. 函数中嵌套函数
    2. 外层函数返回内存嵌套的函数名
    3. 嵌套函数对外部作用域有一个非全局变量的引用
    def func():
        a = 100
    
        def func2():
            print(a)
    
        return func2

     

    2、装饰器

    语法:@装饰器
    装饰器的作用:在不更改原功能函数代码和调用方式的基础上给函数扩展新的功能。

    开放封闭原则:

    • 开放:对功能的扩展时开放的
    • 封闭:对已经实现的功能的修改是封闭的
    def func(fu):
        """
        :param fu: 被装饰的函数
        :return:
        """
        def wrapper():
            print("装饰扩展的新功能1")
            print("装饰扩展的新功能2")
            # 调用原功能函数
            fu()
            print("装饰扩展的新功能3")
    
        return wrapper
    
    
    
    @func    #    ----> print_info = func(print_info)
    def print_info():
        print("---原功能函数打印的个人信息---")
    
    
    print_info()


    结果:

    3、迭代器和生成器

    可迭代对象:python中可以使用for去进行遍历的都叫可迭代对象
      - 字符串、列表、元组、字典、range

    迭代器:可迭代对象的一种,可以用内置函数next迭代取值

    生成器:它是一种特殊的迭代器,同过yield可以定义生成器函数

    li = [11,22,33,44]
    
    # 使用内置函数iter讲迭代对象转换为迭代器
    ite = iter(li)
    
    res = next(ite)
    print(res)
    print(next(ite))
    print(next(ite))
    print(next(ite))
    print(next(ite))  # -------超出迭代范围

    def gen():
        "生成器函数"
        for i in range(100):
            yield i
            print("函数调用打印",i)
    
    g = gen()
    
    
    print(next(g))
    print(next(g))
    print(next(g))

     

     

     

     

  • 相关阅读:
    战旗游戏系统分析
    战棋游戏的战术性
    利用JSFL制作swf素材包
    深刻理解Java编程的7个例子
    ORACLE SQL:经典查询练手第二篇
    删除U盘时提示无法停止“通用卷”设备
    ORACLE SQL:经典查询练手第四篇
    IE8中打不开oracle EBS画面 FRM92050
    ORACLE SQL:经典查询练手第三篇
    ORACLE SQL:经典查询练手第一篇
  • 原文地址:https://www.cnblogs.com/erchun/p/13508418.html
Copyright © 2020-2023  润新知