自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

學(xué)習(xí)Python裝飾器,這一篇文章就夠了!看完你就會了

開發(fā) 后端
談裝飾器前,還要先要明白一件事,Python 中的函數(shù)和 Java、C++不太一樣,Python 中的函數(shù)可以像普通變量一樣當(dāng)做參數(shù)傳遞給另外一個函數(shù)...
 [[227520]]

講 Python 裝飾器前,我想先舉個例子,雖有點污,但跟裝飾器這個話題很貼切。

學(xué)習(xí)python裝飾器,這一篇文章就夠了!看完你就會了

談裝飾器前,還要先要明白一件事,Python 中的函數(shù)和 Java、C++不太一樣,Python 中的函數(shù)可以像普通變量一樣當(dāng)做參數(shù)傳遞給另外一個函數(shù),例如:

學(xué)習(xí)python裝飾器,這一篇文章就夠了!看完你就會了

學(xué)習(xí)python裝飾器,這一篇文章就夠了!看完你就會了

先來看一個簡單例子,雖然實際代碼可能比這復(fù)雜很多:

學(xué)習(xí)python裝飾器,這一篇文章就夠了!看完你就會了

現(xiàn)在有一個新的需求,希望可以記錄下函數(shù)的執(zhí)行日志,于是在代碼中添加日志代碼:

學(xué)習(xí)python裝飾器,這一篇文章就夠了!看完你就會了

學(xué)習(xí)python裝飾器,這一篇文章就夠了!看完你就會了

學(xué)習(xí)python裝飾器,這一篇文章就夠了!看完你就會了

學(xué)習(xí)python裝飾器,這一篇文章就夠了!看完你就會了

簡單裝飾器

學(xué)習(xí)python裝飾器,這一篇文章就夠了!看完你就會了

學(xué)習(xí)python裝飾器,這一篇文章就夠了!看完你就會了

@ 語法糖

學(xué)習(xí)python裝飾器,這一篇文章就夠了!看完你就會了

學(xué)習(xí)python裝飾器,這一篇文章就夠了!看完你就會了

學(xué)習(xí)python裝飾器,這一篇文章就夠了!看完你就會了

*args、**kwargs

可能有人問,如果我的業(yè)務(wù)邏輯函數(shù) foo 需要參數(shù)怎么辦?比如:

學(xué)習(xí)python裝飾器,這一篇文章就夠了!看完你就會了

我們可以在定義 wrapper 函數(shù)的時候指定參數(shù):

學(xué)習(xí)python裝飾器,這一篇文章就夠了!看完你就會了

學(xué)習(xí)python裝飾器,這一篇文章就夠了!看完你就會了

學(xué)習(xí)python裝飾器,這一篇文章就夠了!看完你就會了

學(xué)習(xí)python裝飾器,這一篇文章就夠了!看完你就會了

學(xué)習(xí)python裝飾器,這一篇文章就夠了!看完你就會了

比如:

學(xué)習(xí)python裝飾器,這一篇文章就夠了!看完你就會了

這時,你就可以把 wrapper 函數(shù)指定關(guān)鍵字函數(shù):

學(xué)習(xí)python裝飾器,這一篇文章就夠了!看完你就會了

[[227525]]

帶參數(shù)的裝飾器

學(xué)習(xí)python裝飾器,這一篇文章就夠了!看完你就會了

學(xué)習(xí)python裝飾器,這一篇文章就夠了!看完你就會了

學(xué)習(xí)python裝飾器,這一篇文章就夠了!看完你就會了

@use_logging(level="warn")等價于@decorator

類裝飾器

學(xué)習(xí)python裝飾器,這一篇文章就夠了!看完你就會了

學(xué)習(xí)python裝飾器,這一篇文章就夠了!看完你就會了

functools.wraps

學(xué)習(xí)python裝飾器,這一篇文章就夠了!看完你就會了

例子:

學(xué)習(xí)python裝飾器,這一篇文章就夠了!看完你就會了

學(xué)習(xí)python裝飾器,這一篇文章就夠了!看完你就會了

學(xué)習(xí)python裝飾器,這一篇文章就夠了!看完你就會了

裝飾器順序

一個函數(shù)還可以同時定義多個裝飾器,比如:

學(xué)習(xí)python裝飾器,這一篇文章就夠了!看完你就會了

學(xué)習(xí)python裝飾器,這一篇文章就夠了!看完你就會了

[[227527]]

學(xué)習(xí)python裝飾器,這一篇文章就夠了!看完你就會了 

責(zé)任編輯:龐桂玉 來源: 今日頭條
相關(guān)推薦

2023-09-04 08:00:00

開發(fā)Java線程

2017-03-13 09:50:46

Python裝飾器

2023-09-05 07:55:56

Python網(wǎng)絡(luò)爬蟲

2021-06-07 06:25:35

畫流程圖開發(fā)技能

2022-06-20 09:01:23

Git插件項目

2021-04-08 07:37:39

隊列數(shù)據(jù)結(jié)構(gòu)算法

2018-08-23 16:22:40

2021-09-27 14:50:11

Python代碼

2019-07-10 15:15:23

JVM虛擬機(jī)Java

2017-03-11 22:19:09

深度學(xué)習(xí)

2020-08-03 10:00:11

前端登錄服務(wù)器

2023-04-24 08:00:00

ES集群容器

2020-07-20 13:59:17

服務(wù)器項目工程打包

2020-08-17 09:25:51

Docker容器技術(shù)

2018-05-22 08:24:50

PythonPyMongoMongoDB

2022-05-26 06:05:16

MySQL數(shù)據(jù)庫

2023-02-10 09:04:27

2020-02-18 16:20:03

Redis ANSI C語言日志型

2020-05-14 16:35:21

Kubernetes網(wǎng)絡(luò)策略DNS

2019-04-02 10:51:29

瀏覽器緩存前端
點贊
收藏

51CTO技術(shù)棧公眾號