参考文章:python中@修饰符
代码示例如下
def test(func):
func()
@test
def fun():
print "call fun"
上面的代码会输出
call fun
@修饰符有点像函数指针,python解释器发现执行的时候如果碰到@修饰的函数,首先就解析它,找到它对应的函数进行调用,并且会把@修饰下面一行的函数作为一个函数指针传入它对应的函数。代码的解析流程如下:
1.python解释器发现@test,就去调用test函数
2.test函数调用预先要指定一个参数,传入的就是@test下面修饰的函数,也就是fun()
3.test()函数执行,调用fun(),fun()打印“call fun”
另一段代码
def test(func):
func()
print "call test over"
def main():
@test
def fun():
print "call fun"
这样调用的话就不会调用test,只有当main函数调用的时候才会进入到main函数,然后调用test