美文网首页学习
python装饰器的实现

python装饰器的实现

作者: TimeSHU | 来源:发表于2018-05-06 23:07 被阅读1次

    装饰器对函数进行修饰,添加一些功能

    装饰器也是一个函数

    但是需要满足一些特定需求才是一个真正的装饰器

    1.不修改被装饰函数的源代码

    2.不修改被装饰函数的调用方式装饰器=高阶函数+函数嵌套+闭包

    满足以上所有条件,才是一个真正的装饰器

    下述代码就是一个装饰器,给ti函数加上运行时间,并且没有修改ti函数的源代码,也没有修改ti函数的调用方式

    import time

    def  text():

        def  text1(func):

            start_time = time.time()#函数开始运行的时间

            func()#调用的就是ti函数

            stop_time = time.time()#函数结束时间

            print('函数的运行时间是%s' %(stop_time-start_time))

        return text1

    @text    #此方法调用text装饰器

    def  ti():

        time.sleep(3)#让程序延迟3秒执行

        print('函数运行完毕')

    ti()#调用函数

    @text  等同于 ti = text(ti) 如果不使用@text则需要用 ti = text(ti),这样每次调用装饰器都需要给ti函数重新赋值,过于麻烦,也不符合上述的不改变函数的调用方式,且只要在需要用到装饰器的时候值需要@text就可以解决

    相关文章

      网友评论

        本文标题:python装饰器的实现

        本文链接:https://www.haomeiwen.com/subject/ypyprftx.html