修饰器(decorator)是函数嵌套定义的另一个重要应用。修饰器本质上也是一个函数,只不过这个函数接收其他函数作为参数并对其进行一定的改造之后使用新函数替换原来的函数。修饰器的主要应用场合是定义多个函数调用之前或之后需要执行的通用代码,提高代码复用度。后面第6章中的静态方法、类方法、属性等也都是通过修饰器实现的,Python中还有很多这样的用法。下面的代码演示了修饰器的定义与使用方法。
def before(func): #定义修饰器
def wrapper(*args, **kwargs):
print('Before function called.')
return func(*args, **kwargs)
return wrapper
def after(func): #定义修饰器
def wrapper(*args, **kwargs):
result = func(*args, **kwargs)
print('After function called.')
return result
return wrapper
@before
@after
def test(): #同时使用两个修饰器改造函数
print(3)
#调用被修饰的函数
test()
上面代码的运行结果为:
Before function called.
3
After function called.