• 函数的装饰器


    在面向对象编程中,一切皆对象
    具体的体现
      1.函数可以被引用
      2.函数可以作为函数的参数
      3.函数可以作为函数的返回值
      4.可以被存储到容器类型中
    函数嵌套
      嵌套调用     在函数中调用了另一个函数
      嵌套定义     在一个函数中定义了另一个函数
      定义在函数内的函数,只能在函数内使用,外界不能访问
    名称空间
      存储名称的空间
      专门存储名字和内存地址的关系的空间
    分类:
      内置名称空间
      存储解释器自带的一些名称与值的对应关系(python解释器启东时创建,所有代码执行完毕,关闭解释器销毁)
      print len max min
      全局名称空间(执行py文件创建全局空间,文件代码全部执行)
      文件级别的名称,只要你的名字定义是顶着最左边写的就在全局空间
      除了内置的函数内的,都在全局中

    局部名称空间
    只要是函数内的名称就是局部的
    (调用函数时创建,执行完毕就销毁)

    名称空间加载顺序
      内置》》》全局》》》局部
    名称的查找顺序
      局部》》》全局》》》内置


    作用域
      全局的名称空间和内置的名称空间,在使用上没什么区别
      全局和内置可以划分为同一个范围
      global表示全局范围,就是全局作用域

    局部的单独划分为一个范围
    local局部作用域

    查看全局作用域内容
    globals(
    查看局部作用域内容
    locals()

    闭包函数
    1.定义在另一个函数中
    2.在这个内部的函数中使用了外部的名称
    # def fun1():
    # age = 10
    # def inner():
    # print("hello")
    # print(age)
    在返回这个内部的函数时,不是单纯的返回函数,还把函数中访问到的局部名称一起打包了
    相当于将内部函数与访问的数据打包在一起了
    # return inner
    函数的作用域在定义时就固定了,与调用的位置没有关系

    闭包函数的模板
    def func2():
    a=1
    b=10
    def inner():
    print(a)
    print(b)
    return inner

    f=func2()
    print(f.__closure__[0].cell_contents)
    print(f.__closure__[1].cell_contents)

    装饰器
    给一个已有的对象添加新的功能
    增强功能
    简单的说:装饰器就是一个用于给其他函数增加功能的函数


    import time
    print(time.time())指从1970年1月1日0点0分(Unix元年)到现在一共经过的秒数
    mac是Linux内核,Linux是unix的一个分支

    start_time=time.time()
    download()
    end_time=time.time()
    print("下载耗时",(end_time-start_time))
    如此方式 违反了一个设计原则 开闭原则
    指的是 对扩展开放 对修改封闭 可以添加新功能,但是不能修改源代码和调用方式
    装饰器和闭包函数的关系
    装饰器是一种设计代码的套路,在不修改源代码和调用方式的情况下添加功能
    要完成装饰器就需要使用闭包函数

  • 相关阅读:
    第09组 Alpha事后诸葛亮
    第09组 Alpha冲刺(4/4)
    第09组 Alpha冲刺(3/4)
    第09组 Alpha冲刺(2/4)
    第09组 Alpha冲刺(1/4)
    机器学习第二次作业
    机器学习第一次作业
    机器学习第一次个人作业
    第04组 Beta冲刺(4/4)
    第04组 Beta冲刺(3/4)
  • 原文地址:https://www.cnblogs.com/xuezhihao/p/10034497.html
Copyright © 2020-2023  润新知