亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中多個裝飾器的執行順序

發布時間:2021-08-24 18:14:56 來源:億速云 閱讀:175 作者:chen 欄目:開發技術

本篇內容介紹了“python中多個裝飾器的執行順序”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

使用場景

可以用到裝飾器的地方有很多,簡單的舉例如以下場景

  • 引入日志

  • 函數執行時間統計

  • 執行函數前預備處理

  • 執行函數后清理功能

  • 權限校驗等場景

  • 緩存

今天講一下python中裝飾器的執行順序,以兩個裝飾器為例。

裝飾器代碼如下:

def wrapper_out1(func):
 print('--out11--')

 def inner1(*args, **kwargs):
  print("--in11--")
  ret = func(*args, **kwargs)
  print("--in12--")
  return ret
 print("--out12--")
 return inner1


def wrapper_out2(func):
 print('--out21--')

 def inner2(*args, **kwargs):
  print("--in21--")
  ret = func(*args, **kwargs)
  print("--in22--")
  return ret
 print("--out22")
 return inner2


@wrapper_out2
@wrapper_out1
def test():
 print("--test--")
 return 1 * 2


if __name__ == '__main__':
 test()

執行結果如下:

"""
--out11--
--out12--
--out21--
--out22--
--in21--
--in11--
--test--
--in12--
--in22--
"""

執行順序以圖片形式展示如下:

python中多個裝飾器的執行順序

先進入離test函數最近的裝飾器,由于裝飾器中返回的是函數的函數名引用,并非真正調用函數,所以先打印:

--out11--
--out12--
--out21--
--out22--

到inner2后,func會真正執行函數,會調用inner1(),所以再打印:

--in21--
--in11--

到inner1中,func會調用test函數,所以會打印:

--test--

再從各個函數出來后,會依次打印:

--in12--
--in22--

合起來就是上面的執行結果。

“python中多個裝飾器的執行順序”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大英县| 新泰市| 隆尧县| 中牟县| 石台县| 鞍山市| 类乌齐县| 古田县| 西华县| 乌兰察布市| 石景山区| 长阳| 南昌县| 环江| 南平市| 七台河市| 水城县| 景德镇市| 临漳县| 古丈县| 曲周县| 潍坊市| 北京市| 林口县| 寻甸| 房产| 昆山市| 菏泽市| 饶河县| 从化市| 郯城县| 东安县| 定远县| 江西省| 栾城县| 达日县| 梅州市| 五寨县| 如皋市| 巨鹿县| 宁津县|