def my(func):
def inner(*agrs,**kwargs):
inner.i+=1
return func(*agrs,**kwargs)
inner.i = 0
return inner
@my
def text():
pass
text()
text()
text()
print(text.i)
- 在注释掉函数调用的时候
def my(func):
print("aaaaaaa")
def inner(*agrs,**kwargs):
inner.i+=1
return func(*agrs,**kwargs)
inner.i = 0
return inner
@my
def text():
pass
# text()
# text()
# text()
# print(text.i)
执行结果
2. 取消上面代码注释后
执行结果为
由上面两个结果可以看出:
- 被装饰函数即使没有调用,装饰器也会执行最外层函数。
- 被装饰函数的调用,最外层函数也不会调用。只会调用inner 中的代码
这样说能理解吗?
1 个赞