def w1(func):
print(' -1 -'*3)
def inner():
print('--2---')
func()
print(' -3 -'*3)
return inner
#只要python 解释器执行到这个代码,自动进行装饰 就会输出 ‘--1--’ ‘--3--’
@w1
def f1():
print('--f1--')
def f2():
print('--f2--')
f2=w1(f2)#等价于@w1
f1()
f2()
'''
-1 - -1 - -1 -
-3 - -3 - -3 -
-1 - -1 - -1 -
-3 - -3 - -3 -
--2---
--f1--
--2---
--f2--
'''
类装饰器
class test(object):
def __init__(self,func):
print('--init---')
self.func=func
def __call__(self, *args, **kwargs):
print('--call---')
self.func()
@test
def t():
print('--t--')
#() 代表调用类中的 __call__ 方法
t()
"""
--init---
--call---
--t--
"""