目录
本篇文章介绍python中的装饰器。
一、基本概念
装饰器的作用:在不修改原功能的基础上,给原功能添加新功能
开放封闭原则: 开放:对已实现的的功能的扩展是开放的。
封闭:对已实现的功能修改是封闭的。
装饰器的应用场景
(1)登录验证
(2)函数运行时间统计
(3)执行函数之前的准备工作
(4)执行函数后清理功能
二、几种不同的装饰器
下面几种不同类型的装饰器:
1.普通装饰器
def fun(num):
def in_fun():
print("这个是内部定义的函数")
print(num)
return in_fun # 可以外部调用
@fun # work = fun(work)
def work():
print('之前的函数功能')
work()
在函数中定义函数,将内层函数作为外层函数的返回值。
2.待参数的装饰器
def decorator(func):
def wrapper(a, b):
print("装饰新增的功能")
func(a, b)
return wrapper
# 函数使用装饰器
@decorator
def add(a, b):
print(F"a+b的值是{a + b}")
# 调用函数
add(11, 22)
使用带参数的装饰器时,要求装饰器中的内层函数的参数个数和装饰函数的参数个数相同
wrapper参数个数 = func参数个数 = add参数个数
3.通用装饰器
可以传递多个参数进行装饰,即可装饰带参数的函数,也可以装饰不带参数的函数
def decorator(func):
def wrapper(*args, **kwargs):
print("装饰器的功能函数1")
res = func(*args, **kwargs)
print("装饰器的功能函数2")
return res
return wrapper
# 装饰不带参数的函数
@de