利用装饰器可以避免代码重复
写法1 普通写法
def func1():
print("you are a fool !!!")
def func2():
print("I are a fool !!!")
def common_func(func):
print("He must be a fool !!!")
func()
print("______func1_______")
common_func(func1)
print("______func2_______")
common_func(func2)
写法2 装饰器
def mydecorator(func): # 接收一个函数作为参数
def func1(): # 嵌套一个包装函数,包装函数会接收原函数的相同参数,并执行原函数,且还会执行附加功能
print("He must be a fool !!!")
func()
return func1
def func1():
print("you are a fool !!!")
def func2():
print("I are a fool !!!")
f1 = mydecorator(func1)
f2 = mydecorator(func2)
print("______func1_______")
f1()
print("______func2_______")
f2()
写法3 装饰器+语法糖
def mydecorator(func): # 接收一个函数作为参数
def function(): # 嵌套一个包装函数,包装函数会接收原函数的相同参数,并执行原函数,且还会执行附加功能
print("He must be a fool !!!")
func()
return function
@mydecorator
def func1():
print("you are a fool !!!")
def func2():
print("I are a fool !!!")
print("______func1_______")
func1()
print("______func2_______")
func2()