装饰
def w1(func):
def inner():
print("---正在验证权限---")
func()
return inner
@w1
def f1():
print("---f1---")
@w1
def f2():
print("---f2---")
f1()
f2()
打印结果:
---正在验证权限---
---f1---
---正在验证权限---
---f2---
python中的装饰器是让一个指针 f1 指向函数地址,在调用函数之前,先去调用装饰器 w1,并且将指向函数地址的指针 f1 传入,在调用函数f1的时候先去调用装饰器,再由装饰器 w1 内部调用 f1,以此来实现装饰器!!
嵌套装饰:
def w1(func):
print("---w1 装饰---")
def inner():
print("---w1 正在验证权限---")
func()
return inner
def w2(func):
print("---w2 装饰---")
def inner():
print("---w2 正在验证权限---")
func()
return inner
@w1
@w2
def f1():
print("---f1---")
f1()
打印结果:
---w2 装饰---
---w1 装饰---
---w1 正在验证权限---
---w2 正在验证权限---
---f1---