亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁技術文章
文章詳情頁

Python裝飾器實現方法及應用場景詳解

瀏覽:2日期:2022-08-01 09:38:28

應用場景:

1、授權(Authorization)

裝飾器能有助于檢查某個人是否被授權去使用一個web應用的端點(endpoint)。它們被大量使用于Flask和Django web框架中。這里是一個例子來使用基于裝飾器的授權:

from functools import wraps # 最新版python引用是 import functoolsdef requires_auth(f): # f 就是我們需要裝飾的函數,一看就是不帶參數的裝飾器 @wraps(f) # 新版python寫法 @functools.wraps(f) def decorated(*args, **kwargs): auth = request.authorization if not auth or not check_auth(auth.username, auth.password): authenticate() return f(*args, **kwargs) return decorated # 該裝飾器需相關配置才能運行,這里是截取代碼展示應用

2.、日志(Logging)

日志是裝飾器運用的另一個亮點。這是個例子:

from functools import wrapsdef logit(func): @wraps(func) def with_logging(*args, **kwargs): print(func.__name__ + ' was called') return func(*args, **kwargs) return with_logging@logitdef addition_func(x): '''Do some math.''' return x + xresult = addition_func(4)

我敢肯定你已經在思考裝飾器的一個其他聰明用法了。

3.、帶參數的裝飾器

帶參數的裝飾器是典型的閉包函數

4.、在函數中嵌入裝飾器

我們回到日志的例子,并創建一個包裹函數,能讓我們指定一個用于輸出的日志文件

from functools import wrapsdef logit(logfile=’out.log’): def logging_decorator(func): @wraps(func) def wrapped_function(*args, **kwargs): log_string = func.__name__ + ' was called' print(log_string) # 打開logfile,并寫入內容 with open(logfile, ’a’) as opened_file:# 現在將日志打到指定的logfileopened_file.write(log_string + ’n’) return func(*args, **kwargs) return wrapped_function return logging_decorator@logit()def myfunc1(): passmyfunc1()# Output: myfunc1 was called# 現在一個叫做 out.log 的文件出現了,里面的內容就是上面的字符串@logit(logfile=’func2.log’)def myfunc2(): passmyfunc2()# Output: myfunc2 was called# 現在一個叫做 func2.log 的文件出現了,里面的內容就是上面的字符串

5.、裝飾器類

現在我們有了能用于正式環境的logit裝飾器,但當我們的應用的某些部分還比較脆弱時,異常也許是需要更緊急關注的事情。比方說有時你只想打日志到一個文件。而有時你想把引起你注意的問題發送到一個email,同時也保留日志,留個記錄。這是一個使用繼承的場景,但目前為止我們只看到過用來構建裝飾器的函數。

幸運的是,類也可以用來構建裝飾器。那我們現在以一個類而不是一個函數的方式,來重新構建logit。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 亚洲免费天堂 | 久久狠狠一本精品综合网 | 玖草在线视频 | 成人高清毛片a | 欧美老头老太做爰xxxx | 欧洲老妇bbbbbxxxxx | 欧美成人精品一区二区三区 | 久草在线免费播放 | 国产一级aaa全黄毛片 | tom影院亚洲国产日本一区 | 亚洲国产精品一区二区首页 | 国产一区不卡 | 宅女福利视频在线看免费网站 | 国产精品免费视频一区二区三区 | 日韩欧美亚州 | 男女上下爽无遮挡午夜免费视频 | 一本一本久久a久久精品综合麻豆 | 久草福利在线观看 | 欧美午夜精品久久久久久黑人 | 国产热久久精 | 国产婷婷一区二区在线观看 | 综合色久 | 黄网站色成年小说系列 | 制服诱惑中文字幕 | 涩涩网站 | 91亚洲精品一区二区福利 | 一本色道久久88综合亚洲精品高清 | 欧美日韩视频一区二区在线观看 | 欧美在线观看一区 | 视频二区欧美 | 久久性精品 | 亚洲精品亚洲人成毛片不卡 | 日韩欧美视频一区二区在线观看 | 国产初高中生粉嫩无套第一次 | 免费成人一级片 | 一级国产视频 | 日本三级韩国三级在线观看a级 | 日韩手机看片福利精品 | 日本成年人视频网站 | 国产一区二区在线观看免费 | 欧美一级毛片免费播放aa |