美文网首页我爱编程
python中修饰器使用

python中修饰器使用

作者: 氕氘氚0921 | 来源:发表于2018-07-16 15:15 被阅读53次

    装饰器本质上是一个函数,该函数用来处理其他函数,它可以让其他函数在不需要修改代码的前提下增加额外的功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等应用场景。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用.概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能。
    在python中使用修饰器的方法通常有以下两种,一种是带参数的,一种是不带参数的。
    先说第一种简单的,不带参数的修饰器。代码如下:

    def decorator(func):
        def instance(*args, **kw):
            print("hello")
            return func(*args, **kw)
        return instance
    
    @decorator
    def test():
        print("test")
    

    程序在一开始执行的时候会将test作为参数传进decorator中,也就是decorator的参数func,将返回值instance作为新的test来用。可以理解为:

    test = decorator(test)
    

    在之后所有test将由这个新的方法来执行。

    还有一种修饰器是需要传参数的,有时候需要参数来决定某些程序逻辑。这种修饰器需要在第一种的基础上再加一级方法,代码如下:

    def decorator_with_args(arguments):
        def decorator(func):
            def instance(*args, **kw):
                print(arguments)
                return func(*args, **kw)
            return instance
        return decorator
    
    @decorator_with_args("haha")
    def test():
        print("test")
    

    这个修饰器可以理解为decorator_with_args是一个执行函数,执行的结果是一个修饰器。那么就变成了先执行函数decorator_with_args("haha"),他的返回值是decorator,而真正的修饰器是decorator。decorator_with_args是传递参数来使用的。
    以上就是个人对python中函数的修饰器的理解。

    相关文章

      网友评论

        本文标题:python中修饰器使用

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