这只是我的个人理解:
在Python的函数中偶尔会看到函数定义的上一行有@functionName的修饰,当解释器读到@的这样的修饰符之后,会先解析@后的内容,直接就把@下一行的函数或者类作为@后边的函数的参数,然后将返回值赋值给下一行修饰的函数对象。
比如:
@a
@b
def c():
…
python会按照自下而上的顺序把各自的函数结果作为下一个函数(上面的函数)的输入,也就是a(b(c()))
def funcA(A): print("function A") def funcB(B): print(B(2)) print("function B") @funcA @funcB def func(c): print("function C") return c**2
================================Result==========================function C
4
function B
function A
则整个程序的执行过程就是funA(funB(funC))
转自
python 中@ 的用法 - 优快云博客 https://blog.youkuaiyun.com/u012759262/article/details/79749299
本文深入探讨了Python中装饰器的使用方法,详细解释了@符号的语法糖如何改变函数的行为,通过实例展示了装饰器的执行流程,即装饰器自下而上依次调用的过程。

被折叠的 条评论
为什么被折叠?



