装饰器
作用:为函数增添特殊功能
基本结构:
- 闭包结构
- 外层以函数引用为参
- 内层调用函数
- 内层修饰结构
# 装饰器定义
def outer(func):
def inner():
print("{} is starting".format(func.__name__)) # 头部修饰
func() # 业务函数调用
print("{} start successfully".format(func.__name__)) # 尾部修饰
return inner
# 装饰器使用
def print_Hello():
print("Hello my decorator!")
# 方法一
temp=outer(print_Hello)
temp()
print_Hello is starting
Hello my decorator!
print_Hello start successfully
# 装饰器定义
def outer(func):
def inner():
print("{} is starting".format(func.__name__)) # 头部修饰
func() # 业务函数调用
print("{} start successfully".format(func.__name__)) # 尾部修饰
return inner
# 装饰器使用
@outer
def print_Hello():
print("Hello my decorator!")
# 方法二
print_Hello()
print_Hello is starting
Hello my decorator!
print_Hello start successfully
若被修饰函数含参,可如下定义与使用装饰器
# 装饰器定义
def outer(func):
def inner(a,b):
print("{} is starting".format(func.__name__)) # 头部修饰
func(a,b) # 业务函数调用
print("{} start successfully".format(func.__name__)) # 尾部修饰
return inner
# 装饰器使用
@outer
def add_num(a,b):
print(a+b)
# 方法二
add_num(1,2)
add_num is starting
3
add_num start successfully
使用装饰器添加附加功能,有助于代码复用。 只需在要装饰的函数上行加上装饰头(@xxx),就可批量对函数加上装饰