Python修饰器
python 修饰器是python 语法中一个很神奇的存在,我们可以这样理解它:
- 在python中,一切皆为对象,函数也是对象,我们定义的名称只是绑定到这些对象的标识符。 函数也不例外,它们也是对象(带有属性)。 各种不同的名称可以绑定到同一个功能对象。
- python 中的函数参数可以是函数(因为都是对象嘛),如果你曾经用过map,filter等方法,那么你一定会对此有所了解。
- 修饰器的作用就是动态的为旧函数增加新的语句,把旧函数“装饰”一番。
下面是董付国老师的《Python程序设计基础(第2版)》中的一段代码:
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)先增加了after修饰的语句后的新函数
print(3) #又增加了before修饰的语句
input:
>>> test()
output:
>>> Before function called.
3
After function called.