通用装饰器
装饰带有参数的函数
# 定义装饰器
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'}