简介
在python程序中,可以使用装饰器给不同的函数或者类插入相同的功能。于其它高级语言相比,python不仅简化了装饰器代码,而且可以快速的实现所需要的功能。同时,装饰器在为函数或者类增加功能时变得十分透明。
创建装饰器
首先,一个装饰器简单来说就是一个函数(方法),只不过装饰器函数的参数必须是一个函数或者类。然后在装饰器函数中重新定义一个新的函数或类,并且在其中执行某些功能前后或中间来使用被装饰的函数或类,最后返回这个新定义的函数或类。
使用装饰器装饰函数
(1)手工装饰器
def decorate1(fun):
def wrapper():
print("第一层装饰:原函数执行前的打印语句")
fun()
print("第一层装饰:原函数执行后的打印语句")
return wrapper
def original_fun():
print("原函数内容")
original_fun()#打印原来函数内容
original_fun=decorate1(original_fun)#此时原函数名指向内嵌函数wrapper,不再执行原函数
original_fun()#再用同样的原函数名打印显示的是加强版本的函数
输出:
原函数内容
第一层装饰:原函数执行前的打印语句
原函数内容
第一层装饰:原函数执行后的打印语句
(2)语法糖装饰器
可使用特殊符号"@“来实现,使用”@装饰器名称"的形式将符号"@"放在函数或类的定义行之前
def decorate1(fun):
def wrapper():
print("第一层装饰:原函数执行前的打印语句")
fun()
print