91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

马山县| 开阳县| 肥乡县| 建湖县| 古田县| 白城市| 诏安县| 秦皇岛市| 深水埗区| 洛隆县| 周宁县| 正定县| 扶绥县| 虹口区| 麻江县| 肃宁县| 上蔡县| 宕昌县| 饶河县| 遂川县| 三原县| 舟曲县| 吐鲁番市| 霍邱县| 南岸区| 班戈县| 阿荣旗| 抚顺县| 吴桥县| 顺义区| 囊谦县| 泸水县| 灵台县| 永平县| 阳春市| 滕州市| 深泽县| 柳江县| 临汾市| 从化市| 香河县|