Python之通用装饰器的使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python之通用装饰器的使用相关的知识,希望对你有一定的参考价值。

1. 装饰带有参数的函数

# 添加输出日志的功能
def logging(fn):
def inner(num1, num2):
print("--正在努力计算--")
fn(num1, num2)
return inner

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

运行结果:

--正在努力计算--
3

2. 装饰带有返回值的函数

# 添加输出日志的功能
def logging(fn):
def inner(num1, num2):
print("--正在努力计算--")
result = fn(num1, num2)
return result
return inner
# 使用装饰器装饰函数
@logging
def sum_num(a, b):
result = a + b
return result
result = sum_num(1, 2)
print(result)

运行结果:

--正在努力计算--
3

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

# 添加输出日志的功能
def logging(fn):
def inner(*args, **kwargs):
print("--正在努力计算--")
fn(*args, **kwargs)
return inner

# 使用语法糖装饰函数
@logging
def sum_num(*args, **kwargs):
result = 0
for value in args:
result += value

for value in kwargs.values():
result += value
print(result)

sum_num(1, 2, a=10)

运行结果:

--正在努力计算--
13

4. 通用装饰器

# 添加输出日志的功能
def logging(fn):
def inner(*args, **kwargs):
print("--正在努力计算--")
result = fn(*args, **kwargs)
return result
return inner

# 使用语法糖装饰函数
@logging
def sum_num(*args, **kwargs):
result = 0
for value in args:
result += value

for value in kwargs.values():
result += value

return result
@logging
def subtraction(a, b):
result = a - b
print(result)

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

subtraction(4, 2)

运行结果:

--正在努力计算--
13
--正在努力计算--
2

5. 小结

  • 通用装饰器的语法格式:

# 通用装饰器
def logging(fn):
def inner(*args, **kwargs):
print("--正在努力计算--")
result = fn(*args, **kwargs)
return result

return inner

以上是关于Python之通用装饰器的使用的主要内容,如果未能解决你的问题,请参考以下文章

Python装饰器通用样式

Python入门之python装饰器的4种类型:函数装饰函数函数装饰类类装饰函数类装饰类

python三大器之装饰器的练习

Python闭包和装饰器

python之登陆验证(装饰器的应用)

python之装饰器