国产日韩欧美一区二区三区综合,日本黄色免费在线,国产精品麻豆欧美日韩ww,色综合狠狠操

極客小將

您現(xiàn)在的位置是:首頁 » 原創(chuàng)課程 » Python

課程內(nèi)容

Python入門課程N(yùn)O60課 函數(shù)裝飾器

極客小將2020-08-27-
裝飾器是一種軟件設(shè)計(jì)模式,可以對已有的對象進(jìn)行功能上的擴(kuò)展,而無需改變其結(jié)構(gòu)。如何使用裝飾器來進(jìn)行功能上的擴(kuò)展?我們得先學(xué)習(xí)Python中的閉包函數(shù)。閉包函數(shù):簡單地理解,就是函數(shù)中定義的一個內(nèi)部函數(shù),該內(nèi)部函數(shù)可以訪問外部函數(shù)作用域中的參數(shù),變量。使用閉包進(jìn)行

裝飾器是一種軟件設(shè)計(jì)模式,可以對已有的對象進(jìn)行功能上的擴(kuò)展,而無需改變其結(jié)構(gòu)。如何使用裝飾器來進(jìn)行功能上的擴(kuò)展?我們得先學(xué)習(xí)Python中的閉包函數(shù)。

閉包函數(shù):簡單地理解,就是函數(shù)中定義的一個內(nèi)部函數(shù),該內(nèi)部函數(shù)可以訪問外部函數(shù)作用域中的參數(shù),變量。

使用閉包進(jìn)行功能擴(kuò)展(即:裝飾器):

假如我們有個項(xiàng)目在初期是允許任何訪問者查看的,代碼如下:

隨著項(xiàng)目的不斷迭代,我們需要方可登陸后才能瀏覽此頁面,那么我們就有兩種選擇,一種是直接修改welcome函數(shù),另一種就是使用函數(shù)裝飾器,前面已經(jīng)講過,函數(shù)裝飾器是對已有對象進(jìn)行功能上的擴(kuò)展,而不改變其結(jié)構(gòu)。很明顯選擇裝飾器更為合適。我們來做一些修改。

裝飾器語法糖:

在上面的代碼片段中,不夠直觀和自然,因?yàn)樾枰獙⒈谎b飾的函數(shù)作為參數(shù)傳遞給裝飾器,還需要再執(zhí)行返回的閉包函數(shù),那么如何才能更優(yōu)雅的使用呢?

Python中提供了語法糖,在函數(shù)頭前面加上一行@decortator的修飾符,可以對當(dāng)前函數(shù)進(jìn)行裝飾,decortator表示具體的裝飾器名。在上文的代碼中,login函數(shù)就是一種裝飾器,現(xiàn)在使用@符號來對welcome函數(shù)進(jìn)行裝飾。以上程序可以修改為:

對welcome函數(shù)使用@login進(jìn)行裝飾以后,Python會自動將wecome函數(shù)作為參數(shù)傳遞給login函數(shù), 并執(zhí)行返回的閉包函數(shù),這是Python裝飾器的核心邏輯所在。裝飾器中的閉包函數(shù)參數(shù)須與被裝飾對象的參數(shù)一致,在不確定被裝飾對象的參數(shù)時,可以使用可變參數(shù):*args, **kwargs。 使用可變參數(shù)的裝飾器結(jié)構(gòu):

裝飾器也是用來進(jìn)行功能上的擴(kuò)展。在面向?qū)ο笾?,裝飾器是一種軟件設(shè)計(jì)模式,可以對已有的對象進(jìn)行功能上的擴(kuò)展,而無需改變其結(jié)構(gòu)。 閉包函數(shù),簡單地理解,就是函數(shù)中定義的一個內(nèi)部函數(shù),該內(nèi)部函數(shù)可以訪問外部函數(shù)作用域中的參數(shù),變量。

預(yù)約試聽課

已有385人預(yù)約都是免費(fèi)的,你也試試吧...

主站蜘蛛池模板: 吴旗县| 台山市| 望谟县| 读书| 宾川县| 平昌县| 梅河口市| 镇平县| 锦屏县| 澄迈县| 福鼎市| 瑞安市| 湖南省| 南丹县| 南昌市| 唐山市| 四会市| 开远市| 保山市| 甘孜| 贡觉县| 建德市| 安仁县| 固安县| 临湘市| 伊宁市| 左云县| 大埔区| 洛宁县| 琼海市| 江门市| 贵溪市| 上虞市| 余江县| 襄垣县| 阳信县| 德庆县| 佛冈县| 垫江县| 精河县| 翼城县|