亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

怎么應用python裝飾器

發布時間:2021-11-09 11:12:36 來源:億速云 閱讀:288 作者:iii 欄目:開發技術

本篇內容主要講解“怎么應用python裝飾器”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么應用python裝飾器”吧!

什么是裝飾器

從字面意思上來看,裝飾器是用來裝飾其他東西的工具。在python中裝飾器分為函數裝飾器和類裝飾器。
簡而言之,函數裝飾器是用來裝飾函數的裝飾器,其主要目的是增加目標函數的功能,類裝飾器也就是裝飾類的裝飾器,增加類的功能。

函數裝飾器

裝飾器本質是嵌套函數
下面是一個簡單的裝飾器

# fun1為裝飾器名稱,function指的是被裝飾的函數
def fun1(function):
	def fun2():
		print("開始了!")
		function() # 執行被裝飾的函數或者 或者 return function()
	return fun2

外面的fun1()需要傳入一個參數,這個參數是用來傳入要被裝飾的函數,里面的fun2()需要執行function這個參數。
這是將函數當成參數傳入另一個函數。

使用方法:
在需要裝飾的函數上添加@裝飾器名稱

@fun1
def fun3():
	print("aaa")

fun3()

可以等價成這樣:

def fun3():
	print("aaa")
fun = fun1(fun3)
fun()

輸出結果是一致的

執行結果:

開始了!
aaa

如果傳入的函數需要參數可以這樣寫:

def fun1(function):
	def fun2(a):
		print("開始了!")
		function(a) 
	return fun2

@fun1
def fun3(a):
	print(a)
fun3("aaa")

輸出結果:

開始了!
aaa

如果不清楚傳入的函數需要多少個參數,可以這樣寫:

def fun1(function):
	def fun2(*args, **kwargs):
		print("開始了!")
		function(*args, **kwargs) 
	return fun2

@fun1
def fun3(a,b):
	print(a,b)

@fun1	
def fun4(a,b,c):
    print(a,b,c)
    
fun3("aaa","bbb")
fun4("ccc","ddd","eee")

運行結果:

開始了!
aaa bbb
開始了!
ccc ddd eee

如果函數裝飾器需要添加參數,可以這樣寫:

def fun(msg):
	def fun1(function):
		def fun2(*args, **kwargs):
			print("開始了!{}".format(msg))
			function(*args, **kwargs) 
		return fun2
	return fun1

@fun(msg="小朋友")
def fun3(a,b):
	print(a,b)

fun3("aaa","bbb")

運行結果:

開始了!小朋友
aaa bbb

類裝飾器

類裝飾器的用法基本和函數裝飾器一樣,只不過是用類寫的裝飾器

class fun1(object):
    def __init__(self, func):
        self.func = func

    def __call__(self, *args, **kwargs):
        print(("開始了!")
        self.func(*args, **kwargs)

@fun1
def fun2(a,b):
	print(a,b)

fun2("aaa","bbb")

類裝飾用到了類的__call__方法

運行結果:

開始了!
aaa bbb

還可以這樣寫:

class fun(object):
    def __init__(self, msg):
        self.msg = msg
        

    def __call__(self, func):
        def fun1(*args, **kwargs):
            print("開始了!{0}".format(self.msg))
            func(*args, **kwargs)
        return fun1

@fun(msg="小朋友")
def fun2(a, b):
    print(a, b)

fun2("aaa,","bbb")

運行結果:

開始了!小朋友
aaa, bbb

到此,相信大家對“怎么應用python裝飾器”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

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

AI

龙里县| 牙克石市| 九江县| 普格县| 永新县| 潞城市| 台东市| 海口市| 泰兴市| 潞西市| 灌云县| 淮滨县| 昌江| 大连市| 潮州市| 西城区| 广德县| 商南县| 大厂| 桃园县| 屯门区| 桦南县| 东山县| 林口县| 东海县| 澎湖县| 雅安市| 玉环县| 井陉县| 皮山县| 五指山市| 襄垣县| 德庆县| 游戏| 麻栗坡县| 梁山县| 平罗县| 东海县| 名山县| 阿勒泰市| 齐齐哈尔市|