24-Python函数4

作者: 撩课学院 | 来源:发表于2018-12-03 08:07 被阅读3次

1.闭包

    概念
        在函数嵌套的前提下
        内层函数引用了外层函数的变量(包括参数)
        外层函数, 又把 内层函数 当做返回值进行返回
        这个内层函数+所引用的外层变量, 称为 "闭包"
    标准格式
        def test1(a):
            b = 10
            其他函数定义代码
            def test2():
                print(a)
                print(b)
            return test2
    应用场景
        外层函数, 根据不同的参数, 来生成不同作用功能的函数
    案例
        根据配置信息, 生成不同的分割线函数
    注意事项
        1. 闭包中, 如果要修改引用的外层变量
            需要使用  nonlocal 变量  声明
            否则当做是闭包内, 新定义的变量
        2. 当闭包内, 引用了一个, 后期会发生变化的变量时, 一定要注意
            函数, 是被调用时, 才去确定变量标识所对应的值

2.装饰器

    作用
        在函数名以及函数体不改变的前提下, 给一个函数附加一些额外代码
    语法
        @装饰器
def 被装饰函数():
    code
    案例
        发说说, 发图片
            附加
                身份验证 操作
        "开放封闭"原则
            已经写好的代码, 尽可能不要修改
            如果想要新增功能, 在原先代码基础上, 单独进行扩展
        单一职责
    注意
        装饰器的执行时间, 是立即执行
    进阶
        装饰器叠加
            从上到下装饰
            从下到上执行
        对有参函数进行装饰
            无论什么场景, 保证函数调用参数个数一致
            为了通用, 可以使用不定长参数, 结合 拆包操作进行处理
        对有返回值的函数进行装饰
            无论什么场景, 保证函数返回值一致
        带有参数的装饰器
            通过@装饰器(参数)的方式, 调用这个函数, 并传递参数; 并把返回值, 再次当做装饰器进行使用
            先计算 @ 后面的内容, 把这个内容当做是装饰器

3.生成器

    生成器
        是一个特殊的迭代器(迭代器的抽象层级更高)
        所以, 拥有迭代器的特性
            惰性计算数据, 节省内存
            能够记录状态, 并通过next()函数, 访问下一个状态
            具备可迭代特性
        但是, 如果打造一个自己的迭代器, 比较复杂
            需要实现很多方法
                后续在"面向对象"编程中会进行讲解
            所以, 就有一个更加优雅的方式 "生成器"
    创建方式
        生成器表达式
            把列表推导式的[] 修改成  ()
            (i for i in range(1, 10000000) if i % 2 == 0)
        生成器函数
            函数中包含  yield语句
            这个函数的执行结果就是 "生成器"
    产生数据的方式
        生成器具备可迭代特性
        next()函数
            等价于
                生成器.__next__()
        for in
    send() 方法
        send方法有一个参数,指定的是上一次被挂起的yield语句的返回值
        相比于.__next__()
            可以额外的给yield 语句 传值
        注意第一次调用
            t.send(None)
    关闭生成器
        g.close()
        后续如果继续调用, 会抛出StopIteration异常提示
    注意
        如果碰到return
            会直接终止, 抛出StopIteration异常提示
        生成器只会遍历一次

学习地址:

撩课-Python大数据+人工智能1
撩课-Python大数据+人工智能2
撩课-Python大数据+人工智能3
撩课-Python大数据+人工智能4
撩课-Python大数据+人工智能5
撩课-Python大数据+人工智能6
撩课-Python-GUI编程-PyQt5

相关文章

  • 24-Python函数4

    1.闭包 2.装饰器 3.生成器 学习地址: 撩课-Python大数据+人工智能1撩课-Python大数据+人工智...

  • Python_8_Python内建函数-迭代器

    1. 内建函数 1 2. 内建函数 2 3. 内建函数 3 4. 内建函数 4 5. 内建函数 5 6. 内建函数...

  • 4,函数

    一:定义函数 定义函数的格式如下: def函数名(): 代码 # 定义一个函数,能够完成打印信息的功能 def p...

  • 4、函数

    函数 1、函数的默认参数 2、函数的参数默认已经定义了,不能再使用let const声明 3、箭头函数 =>

  • dplyr

    1. filter 函数 2. arrange() 函数 3. select 函数 4. mutate() 函数 ...

  • MySql之SQL语句学习笔记(五)

    文章摘要:1、AVG 函数2、COUNT()3、FIRST() 函数4、LAST() 函数5、MAX() 函数6、...

  • 挑战极短代码之一:3种经典思路

    今天的任务 简单的规则。你的函数输入4和7。如果输入了4,函数应该返回7。如果输入了7,函数应该返回4。其他任何输...

  • js核心之函数

    1.五种函数 2. 函数的name属性 3. 函数的本质 4. this和arguments 4.call sta...

  • iOS生成随机数

    Objective-C语言中生成随机数的函数 arc4random()函数arc4random()函数用来生成随机...

  • js总结(4.函数)

    函数 ** 1.函数** 2.定义函数 3.定义带参函数 4.带有返回值的函数

网友评论

    本文标题:24-Python函数4

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