python中裝飾器的執行順序


import time

def outter(func):
print(1)
def wrapper(*args, **kwargs):
print(2)
start = time.time()
time.sleep(3)
func(*args, **kwargs)
stop = time.time()
print(stop - start)
print(3)
return wrapper


@outter
def index(x, y):
print(4)
print('index->%s %s' % (x, y))


# 執行順序為:python解釋器啟動執行裝飾器@outter這一行
# 當碰到@函數名時,會調用@后面的函數並且把下面的函數作為參數穿進去
# 如:outter(index),並執行這個函數,會返回wrapper,就是wrapper的內存地址
# 所有函數index就變成了wrapper(wrapper偽裝成了index),下面是正式調用index
# 因為index已經變成了wrapper,所以會直接調用wrapper
# 並且執行完會返回到函數調用處,接着往下執行



index(1, 2)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM