zoukankan      html  css  js  c++  java
  • python装饰器

    一、装饰器
    装饰器,这个器就是函数的意思,连起来,就是装饰函数,装饰器本身也是一个函数,它的作用是用来给其他函数添加新功能,比如说,我以前写了很多代码,系统已经上线了,但是性能比较不好,现在想把程序里面每个函数都加一个功能,用来统计每个函数的运行时间是多少,找出来运行比较慢的函数,来优化代码,就需要添加一个新的功能,来统计程序的运行时间,那这样的话,就得修改每个函数了,需要改代码,但是代码特别多,改完了公司倒闭了,这时候装饰器就能排上用场了,它可以不改变原有的函数,原来的函数和原来一模一样,什么都不需要改变,只需要在函数外部加上调用哪个装饰器就可以了。so,装饰器的作用就是不改变原来函数的调用方式,不改变原来函数的代码,给它增加了一个新功能。但是不改变函数,给它增加新功能,那是不可能的,装饰器只不过是偷偷改变了原来的函数而已,而原来的函数不知不觉。

    import time,os,sys
    def timer(func):
    def deco(*args,**kwargs):
    #*args,**kwargs用来接收传入函数的参数
    start_time = time.time()
    res = func(*args,**kwargs)#获取返回值
    end_time = time.time()
    print('runtime',end_time-start_time)
    return res
    return deco

    @timer
    def run(name):
    print(name)
    time.sleep(0.5)
    run('nihao')
    #上面这个函数功能,就是使用装饰器,给run函数添加统计行数运行时间的功能
    #上面这个函数其实就是返回了一个函数名而已
    #1、调用timer函数的时候,要传入一个方法名,
    # timer函数在函数内部定义了一个函数叫做deco
    #又在函数deco内部调用了timer里面传入的方法
    #run保存的是deco,deco是一个函数,调用run就是调用deco
  • 相关阅读:
    基于 WebGL 的 HTML5 楼宇自控 3D 可视化监控
    基于 HTML5 的 WebGL 楼宇自控 3D 可视化监控
    基于 WebGL 3D 的 HTML5 档案馆可视化管理系统
    基于 HTML5 的 WebGL 3D 档案馆可视化管理系统
    基于 HTML5 的 WebGL 和 VR 技术的 3D 机房数据中心可视化
    代码管理(四)SVN和Git对比
    代码管理(二)sourcetree 安装与使用
    代码管理(一)git
    iOS11新特性之LargeTitle
    使用Cordova搭建Andoid和iOS开发环境
  • 原文地址:https://www.cnblogs.com/lazy-cat-home/p/7019107.html
Copyright © 2011-2022 走看看