原文链接
http://t.csdn.cn/PRhUe
关键代码
def dec1(func):
print("1111")
def one():
print("2222")
func()
print("3333")
return one
def dec2(func):
print("aaaa")
def two():
print("bbbb")
func()
print("cccc")
return two
@dec1
@dec2
def test():
print("test test")
test()
输出结果
aaaa
1111
2222
bbbb
test test
cccc
3333
分步解释
'''
1. Test=dec2(test)
2. Test=dec1(test)#此时的test=dec2(test),所以可得此时应该是下式:
3. Test=dec1(dec2(test))#从内向外执行
4. 执行dec2(test)
5. 执行print(‘aaa’)
6. 执行def two: return two; #此时,其内部的func()就是test()只是还没被执行到。
7. 执行test=dec1(two)
8. 执行print(‘111’)
9. 执行def one: return one; #此时,其内部的func()就是two()只是还没被执行到。
10. 执行test()#因为上行的结果是test=one,所以实际是执行one()
11. 执行print(‘222’)
12. 执行two()
13. 执行print(‘bbb’)
14. 执行test()
15. print(‘test test’)
16. print(‘ccc ccc’)
17. print(‘333’)
'''
内容摘自上文链接及评论,仅供学习,侵删。