1.概念:是一个闭包,把一个函数当作参数返回一个代替版的函数,本质上就是一个返回函数的函数.
2.理解:在不改变原函数的基础上给函数增加新的功能
3.例一(一个简单的装饰器):
def func():
print("machi is a good man!")
def outer(func1):
def inner():
print("*********")
func1()
return inner
func = outer(func)
func()
4.例二(一个较复杂的装饰器):
def say(age):
print("machi is a %d years old man!) %(age))
def outer(func):
def inner(a):
if a >= 0:
func(age)
else:
func(0)
return inner
say = outer(say)
say(10)
say(-10)
5.通用装饰器(模板):
def outer(func):
def inner(*args, **kwargs): #表示可以接受任意数量的参数
#添加装饰器功能
pass
return inner
@outer #应用装饰器