python中修饰器使用

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