【Python】Python装饰器的功能和作用是什么?

Python装饰器的作用是为已有函数或类增强额外功能,decorator的功能有:

  1. 参数检查
    确保传入函数的参数满足要求。
## python www.itzhimei.com 代码
def check(func):
    def inner(x, y):
        if x < 0 or y < 0:
            raise ValueError('Arguments must be positive')
        return func(x, y)
    return inner

@check
def divide(a, b):
    return a/b
  1. 权限校验
    只有满足特定条件才能执行函数。
## python www.itzhimei.com 代码
def auth(func):
    def inner(*args, **kwargs):
        if check_auth():
            return func(*args, **kwargs)
        else:
            raise PermissionError('Auth failed')
    return inner

@auth        
def delete_user(user_id):
    pass
  1. 日志记录
    自动记录函数的调用日志。
## python www.itzhimei.com 代码
def log(func):
    def inner(*args, **kwargs):
        print(f'Calling {func.__name__}')
        return func(*args, **kwargs)
    return inner

@log
def add(x, y):
    return x + y
  1. 性能测试
    计算函数执行时间。
## python www.itzhimei.com 代码
import time

def timer(func):
    def inner(*args, **kwargs):
        start = time.time()
        result = func(*args, **kwargs)
        end = time.time()
        print(f'{func.__name__} took {end-start} seconds')
        return result
    return inner

装饰器通过闭包实现在不修改函数源代码的条件下为其添加新功能,是一个非常强大和实用的设计模式。