通用装饰器

通用装饰器

装饰带有参数的函数

# 定义装饰器
def logging(fn):
    def inner(a, b):
        fn(a, b)

    return inner

# 使用装饰器装饰函数
@logging
def sum_num(a, b):
    result = a + b
    print(result)

sum_num(1, 2)

装饰带有返回值的函数

# 定义装饰器
def logging(fn):
    def inner(a, b):
        result = fn(a, b)
        return result

    return inner

# 使用装饰器装饰函数
@logging
def sum_num(a, b):
    result = a + b
    return result

result = sum_num(1, 2)
print(result)

装饰带有不定长参数的函数

# 定义装饰器
def logging(fn):
    def inner(*args, **kwargs):
        fn(*args, **kwargs)

    return inner

# 使用装饰器装饰函数
@logging
def sum_num(*args, **kwargs):
    print(args, kwargs)

sum_num(1, 2, 3, age = "18") # (1, 2, 3) {'age': '18'}

通用版的装饰器

# 定义装饰器
def logging(fn):
    def inner(*args, **kwargs):
        result = fn(*args, **kwargs)
        return result

    return inner

# 使用装饰器装饰函数
@logging
def sum_num(*args, **kwargs):
    print(args, kwargs)

sum_num(1, 2, 3, age = "18") # (1, 2, 3) {'age': '18'}