欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

python中裝飾函數(shù)的簡單介紹

如何使用Python裝飾器裝飾函數(shù)

內(nèi)置語法糖 格式優(yōu)美 逼格較高

成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都做網(wǎng)站、成都網(wǎng)站設(shè)計、天峻網(wǎng)絡(luò)推廣、小程序設(shè)計、天峻網(wǎng)絡(luò)營銷、天峻企業(yè)策劃、天峻品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供天峻建站搭建服務(wù),24小時服務(wù)熱線:028-86922220,官方網(wǎng)址:www.aaarwkj.com

在代碼中使用洽到好處的裝飾器瞬間讓代碼優(yōu)美很多

寫起來也很簡單 無參的裝飾器參數(shù)是要裝飾的函數(shù) 有參裝飾器參數(shù)是需要的參數(shù) 最后返回的是內(nèi)部函數(shù)!

Python筆記:Python裝飾器

裝飾器是通過裝飾器函數(shù)修改原函數(shù)的一些功能而不需要修改原函數(shù),在很多場景可以用到它,比如① 執(zhí)行某個測試用例之前,判斷是否需要登錄或者執(zhí)行某些特定操作;② 統(tǒng)計某個函數(shù)的執(zhí)行時間;③ 判斷輸入合法性等。合理使用裝飾器可以極大地提高程序的可讀性以及運行效率。本文將介紹Python裝飾器的使用方法。

python裝飾器可以定義如下:

輸出:

python解釋器將test_decorator函數(shù)作為參數(shù)傳遞給my_decorator函數(shù),并指向了內(nèi)部函數(shù) wrapper(),內(nèi)部函數(shù) wrapper() 又會調(diào)用原函數(shù) test_decorator(),所以decorator()的執(zhí)行會先打印'this is wrapper',然后打印'hello world', test_decorator()執(zhí)行完成后,打印 'bye' ,*args和**kwargs,表示接受任意數(shù)量和類型的參數(shù)。

裝飾器 my_decorator() 把真正需要執(zhí)行的函數(shù) test_decorator() 包裹在其中,并且改變了它的行為,但是原函數(shù) test_decorator() 不變。

一般使用如下形式使用裝飾器:

@my_decorator就相當于 decorator = my_decorator(test_decorator) 語句。

內(nèi)置裝飾器@functools.wrap可用于保留原函數(shù)的元信息(將原函數(shù)的元信息,拷貝到對應(yīng)的裝飾器函數(shù)里)。先來看看沒有使用functools的情況:

輸出:

從上面的輸出可以看出test_decorator() 函數(shù)被裝飾以后元信息被wrapper() 函數(shù)取代了,可以使用@functools.wrap裝飾器保留原函數(shù)的元信息:

輸出:

裝飾器可以接受自定義參數(shù)。比如定義一個參數(shù)來設(shè)置裝飾器內(nèi)部函數(shù)的執(zhí)行次數(shù):

輸出:

Python 支持多個裝飾器嵌套:

裝飾的過程:

順序從里到外:

test_decorator('hello world') 執(zhí)行順序和裝飾的過程相反。

輸出:

類也可以作為裝飾器,類裝飾器主要依賴__call__()方法,是python中所有能被調(diào)用的對象具有的內(nèi)置方法(python魔術(shù)方法),每當調(diào)用一個類的實例時,__call__()就會被執(zhí)行一次。

下面的類裝飾器實現(xiàn)統(tǒng)計函數(shù)執(zhí)行次數(shù):

輸出:

下面介紹兩種裝飾器使用場景

統(tǒng)計函數(shù)執(zhí)行所花費的時間

輸出:

在使用某些web服務(wù)時,需要先判斷用戶是否登錄,如果沒有登錄就跳轉(zhuǎn)到登錄頁面或者提示用戶登錄:

--THE END--

python裝飾器使用

裝飾器是從英文decorator翻譯過來的,從字面上來看就是對某個東西進行修飾,增強被修飾物的功能,下面我們對裝飾器做下簡單介紹。

一、怎么編寫裝飾器

裝飾器的實現(xiàn)很簡單,本質(zhì)是一個可調(diào)用對象,可以是函數(shù)、方法、對象等,它既可以裝飾函數(shù)也可以裝飾類和方法,為了簡單說明問題,我們實現(xiàn)一個函數(shù)裝飾器,如下代碼:

有了這個裝飾器,我們就可以打印出什么時候開始和結(jié)束調(diào)用函數(shù),對于排查函數(shù)的調(diào)用鏈非常方便。

二、帶參數(shù)的裝飾器

上面的例子無論什么時候調(diào)用sum都會輸出信息,如果我們需要按需輸出信息怎么實現(xiàn)呢,這時就要用到帶參數(shù)的裝飾器了,如下代碼:

對sum使用裝飾器時沒有參數(shù),這時debug為0,所以調(diào)用sum時不會輸出函數(shù)調(diào)用相關(guān)信息。

對multi使用裝飾器時有參數(shù),這時debug為1,所以調(diào)用multi時會輸出函數(shù)調(diào)用相關(guān)信息。

三、函數(shù)名字問題

當我們打印被裝飾后的函數(shù)名字時,不知道大家有沒發(fā)現(xiàn)輸出的不是函數(shù)本身的名字,如下代碼會輸出‘wrap’而不是‘sum’:

有時這種表現(xiàn)并不是我們想要的,我們希望被裝飾后的函數(shù)名字還是函數(shù)本身,那要怎么實現(xiàn)呢?很簡單,只需要引入functools.wraps即可,如下代碼就會輸出‘sum’了:

看完后是不是覺得python裝飾器很簡單,只要了解它的本質(zhì),怎么寫都行,有好多種玩法呢。

本文標題:python中裝飾函數(shù)的簡單介紹
文章起源:http://www.aaarwkj.com/article40/dsiipeo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)微信小程序、網(wǎng)站內(nèi)鏈網(wǎng)站策劃、云服務(wù)器、網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計
91中文字幕精品一区二区| 日本人妻中文字幕在线一区| 99热在线免费观看精品| 亚洲精品成人午夜av| 亚洲欧美日韩一区二区视频| 高潮的毛片激情久久精品| 欧美黄色成人免费网站| 91福利社区欧美大片| 人成午夜视频在线播放| 91蜜臀在线视频播放| 亚洲中文波霸中文字幕| 欧美日韩69av网| 国产精品综合日韩精| 亚洲欧美日韩1区2区| 91在线人妻一区二区三区| 亚洲精品黄色在线观看| 亚洲免费av第一区第二区| 欧美黄片一区二区三区三| 欧美 成人一区二区三区| 外国男人搞亚洲女人在线| 日韩高清在线不卡视频| 国产精品一区二区av麻豆| 国产一区 亚洲精品| 粉嫩极品美女国产精品| 97国产一区二区精品久久呦| 久久精品国语少妇对白| 麻豆国产精品原创av男女| 丰满人妻毛片一区二区三区| 精品人妻日韩中文字幕| 亚洲精品天堂av免费看| 亚洲精品在线免费av| 国产av一级二级三级最新精品| 中文字幕一区二区不卡顿| 国产aaa级日本一区二区三区 | 中文字幕在线感觉av| 人妻一少妇一区二区三区 | 欧美性精品不卡在线观看| 日本亚洲欧美男人的天堂| 涩久久悠悠一区二区三区| 97久久成人国产精品免费| 免费的一区二区中文字幕|