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

溫馨提示×

溫馨提示×

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

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

Python函數系列之裝飾器(三)

發布時間:2020-07-16 12:01:08 來源:網絡 閱讀:585 作者:zjdevops 欄目:編程語言

在Python中,裝飾器的本質就是Python中的一個函數,其來源自Python面向對象。裝飾器是在函數調用之上的修飾。這些修飾僅是當聲明一個函數或方法的時候,才會被應用額外的調用。有點類似Java中的AOP(面向方面編程)。同時在設計模式中,還有裝飾器模式,也即是:裝飾器模式(Decorator Pattern)允許向一個現有的對象添加新的功能,同時又不改變其結構原則是:不修改被修飾函數的源代碼,不修改被修飾函數的調用方式。

裝飾器的用途:

  • 引入日志

  • 增加計時邏輯來檢測性能

  • 給函數加入事務的能力

  • 權限校驗

  • 緩存

  • 執行函數前/后的預備或清理功能等

例子:

#?-*-?coding:?utf-8?-*-

import?time

def?deco(func):?#func?=?test1或test2
????def?wrapper():
????????start_time?=?time.time();
????????func();?#就是運行?test1()或者test2()函數
????????end_time?=?time.time();
????????print("此模塊運行時間為:%s"?%(end_time?-?start_time));
????return?wrapper;

def?test1():
????time.sleep(3);
????print("函數Test1運行結束");


def?test2():
????time.sleep(3);
????print("函數Test2運行結束")

#在沒用使用裝飾器調用時,如下調用
test1?=?deco(test1)?#返回的wrapper函數地址
test1()?#執行的wrapper()

test2?=?deco(test2)
test2()

#若上面函數有上百上千個,都是那樣調用,都是重復的代碼調用,在Python中,使用@語法糖

#例如下面定義一個test3函數
@deco??#就相等于?test3?=?deco(test3)
def?test3():
????time.sleep(3);
????print("函數Test-3運行結束");
test3()

運行結果如下:

函數Test1運行結束

此模塊運行時間為:3.000406265258789

函數Test2運行結束

此模塊運行時間為:3.000087261199951

函數Test-3運行結束

此模塊運行時間為:3.000718355178833


Process finished with exit code 0

裝飾器的語法以@開頭,接著是裝飾器函數的名字和可選的參數。緊跟著裝飾器聲明的是被修飾的函數和裝飾函數的可選參數。

例如如下:

@decorator(dec_opt_args)

def func(func_opt_args):

? ......


向AI問一下細節

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

AI

时尚| 南城县| 尼木县| 拉萨市| 化州市| 青海省| 平凉市| 青阳县| 若尔盖县| 边坝县| 铜梁县| 广元市| 舟山市| 乌拉特前旗| 曲沃县| 石家庄市| 杭锦后旗| 蓬安县| 白城市| 定兴县| 萍乡市| 长顺县| 报价| 宝鸡市| 西峡县| 维西| 固安县| 巴林左旗| 新建县| 五河县| 常宁市| 双流县| 安福县| 青阳县| 密云县| 察雅县| 麻栗坡县| 蕲春县| 南陵县| 临泽县| 东海县|