在Python的函数中,函数定义的上一行有@functionName的修饰,当解释器读到@这样的修饰符之后,会先解析@后的内容,把@下一行的函数或者类作为@后边的函数的参数,然后将返回值赋值给下一行修饰的函数对象。
比如:
@a
@b
def c():
…
python会按照自下而上(注意:从下到上)的顺序把各自的函数结果作为下一个函数(上面的函数)的输入,也就是a(b(c())),下面我们来看有一个例子。
def funcA(A):
print("in func A")
def funcB(B):
print(B)
print("in func B")
@funcA
@funcB
def func(c):
print("in func C")
return c**2
func(2) ##进行函数调用
=====================================================================
输出结果如下:
in func C
4
in func B
in func A
则整个程序的执行过程就是funA(funB(funC))