Python装饰器

一、闭包函数

一、什么是闭包
1、一个定义在函数内部的函数,闭包可以让变量脱离了该函数的作用域也依然能被访问到
2、定义一个嵌套函数,内函数内部使用外函数变量,让外函数将内函数当做参数返回,这样就组成了一个闭包

二、写法
def outer(x):
    def inner():
        y = x * 2
        return y
    return inner
result=outer(10)
print(result())

三、执行过程
1、调用外函数(outer),将参数赋值给x,此时x=10
2、执行外函数(outer),内函数(inner)不会被执行
3、执行到return语句此时返回内函数inner对象(不会被调用)
4、此时外函数(outer)执行结束的时候发现内部函数会用到自己的临时变量
5、此时外函数(outer)临时变量就不会释放,会绑定给内函数内函数(inner)继续使用
6、此时result得到的结果就是inner引用(对象),调用result就等于执行内函数(inner)

二、普通装饰器

一、原理
1、闭包的特性
2、函数可以被当做参数传递

二、不使用语法糖
import time
#无参数的装饰器
def out(fn):
    def inner():
        start_time = time.time()
        result = fn()
        end_time = time.time()
        return result,end_time - start_time
    return inner

def demo():
    print("demo")
    time.sleep(1)
    return "success"

if __name__ == '__main__':
    #将目标函数demo当做参数传进去
    #new_demo接收的是out返回的inner函数
    new_demo = out(demo)
    result = new_demo()
    print(result)

三、无参数的装饰器,语法糖实现
import time
#无参数的装饰器
def out(fn):
    def inner():
        start_time = time

相关推荐

  1. Python装饰

    2024-04-15 00:18:03       41 阅读
  2. Python装饰

    2024-04-15 00:18:03       40 阅读
  3. Python装饰

    2024-04-15 00:18:03       38 阅读
  4. Python装饰

    2024-04-15 00:18:03       36 阅读
  5. Python装饰

    2024-04-15 00:18:03       32 阅读
  6. Python装饰

    2024-04-15 00:18:03       39 阅读
  7. python装饰(Decorator)

    2024-04-15 00:18:03       24 阅读
  8. Python 装饰

    2024-04-15 00:18:03       16 阅读
  9. Python装饰

    2024-04-15 00:18:03       14 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-15 00:18:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-15 00:18:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-15 00:18:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-15 00:18:03       18 阅读

热门阅读

  1. Vue EasyUI插件 学习笔记(基础)详细版

    2024-04-15 00:18:03       17 阅读
  2. jQuery学习笔记(2.0)

    2024-04-15 00:18:03       12 阅读
  3. Nginx 基础应用实战 04 在公网配置配置HTTPS

    2024-04-15 00:18:03       15 阅读
  4. 前端npm常用命令总结

    2024-04-15 00:18:03       12 阅读
  5. Go语言开发小技巧&易错点100例(十四)

    2024-04-15 00:18:03       13 阅读
  6. MATLAB 点云直通滤波(57)

    2024-04-15 00:18:03       17 阅读