装饰器

Posted WhatTTEver

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了装饰器相关的知识,希望对你有一定的参考价值。

decrator

装饰器:
定义:本质是函数,(装饰其他函数)就是为其他函数添加功能
原则:1、不能修改被装饰的函数的源代码
        2、不能修改被装饰的函数的调用方式


实现装饰器的功能知识储备
1、函数即变量
2、高阶函数
a:把一个函数当做参数传递给另外一个函数(在不修改被装饰函数的源代码的情况下为
其他函数添加功能)
b:返回值中包含函数名(不修改函数的调用方式)
3、嵌套函数

高阶函数+嵌套函数-》装饰器

技术分享
###########被装饰的函数有参数时############
import time
def timmer(func):   #timer(test1)   func=test1
    def warpper(*arg,**kwargs):##适用于所有函数形式即有无参数
        start_time=time.time()
        func(*arg,**kwargs)  #run test1(name)
        stop_time=time.time()
        print("The func run time is %s"%(stop_time-start_time))
    # def warpper(arg1,age):#传递过来的参数
    #     start_time=time.time()
    #     func(arg1,age)  #run test1(name)
    #     stop_time=time.time()
    #     print("The func run time is %s"%(stop_time-start_time))
    return warpper
@timmer  #等价于test1=timmer(test1)  =warpper      test1(name,age)=warpper(name,age)
def test1(name,age):
    time.sleep(3)
    print("This is the test1:",name,age)
View Code有参数的装饰器

无参数的装饰器

########被装饰的函数无参数时###############
import time
def timmer(func):   #timer(test1)   func=test1
    def warpper(*args,**kwargs):
        start_time=time.time()
        func()  #run test1()
        stop_time=time.time()
        print("The func run time is %s"%(stop_time-start_time))
    return warpper
@timmer  #等价于test1=timmer(test1)  =warpper      test1()=warpper()
def test1():
    time.sleep(3)
    print("This is the test1")

@timmer
def test2():
    time.sleep(3)
    print("This is the test2")
test1()
test2()

 











以上是关于装饰器的主要内容,如果未能解决你的问题,请参考以下文章

Python面向对象学习之八,装饰器

thymeleaf 片段渲染后重新加载 javascript

代码缺乏装饰?使用ts装饰器来装饰你的代码

代码缺乏装饰?使用ts装饰器来装饰你的代码

代码缺乏装饰?使用ts装饰器来装饰你的代码

代码缺乏装饰?使用ts装饰器来装饰你的代码