def set_func(func):
# print('装饰器开始装饰了...')
def call_func(num):
print('....权限1.....')
print('....权限2.....')
func(num)
return call_func
@set_func # 等价于 test1 = set_func(test1)
def test1(num):
print(".......这是test1......%d" % num)
test1(100)
test1(200)
# 一个装饰器可以装饰多个函数,并不是函数调用时才装饰,可以在去掉函数调用验证
# 每装饰一个函数,就会生成一个闭包空间,会生成一个局部变量用来存储原来函数指向的地址,跟类生成一个实例对象类似
'''
必须使用闭包才能将对test1原指向保存下来
def set_func(func,num):
a = func
print('....权限1.....')
print('....权限2.....')
a(num)
# 等价于 test1 = set_func(test1)
def test1(num):
print(".......这是test1......%d" % num)
test1 = set_func(test1,100)
test1(100)
test1(200)
'''