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
  • 相关阅读:
    Linux下安装nginx
    使用Nginx搭建集群
    怎样解决虚拟机中多台机器之间的相互通信问题??
    怎样安装vmtools
    常用的机器学习&数据挖掘知识(点)领域链接
    sparkan安装链接
    matlab中怎样将散点用光滑曲线连接起来??
    matlab中怎样画出散点图,将这些散点连接成线??
    matlab中怎样计算两个集合的差集?-setdiff函数
    MATLAB中在一个三维矩阵中如何提取出一个二维矩阵,使用permute
  • 原文地址:https://www.cnblogs.com/lazy-cat-home/p/7019107.html
Copyright © 2011-2022 走看看