python中一層裝飾器的函式可以帶引數嗎

2021-04-18 23:09:06 字數 1303 閱讀 7141

1樓:我愛

可以的,

裝飾器分bai為可帶參du數和不可帶引數的兩種;zhi但是如果帶引數,dao

則帶專引數裝飾器的「屬引數」及「return」必須也是乙個裝飾器具體可以參考一下下面的例子:

def deco1(func):

def w(x,*args,**kw):

print "this is deco1"

return x + " decorator"

return w

def deco2(deco):

print "this is deco2"

return deco

@deco2(deco1)

def func(x):

return x

print func("hello")

python 帶可變引數的裝飾器怎麼用

2樓:育知同創教育

裝飾器本身是用來是為乙個函式是實現新的功能,並且不改變原函式的**以及呼叫方式。

遇到這樣一種問題:

眾多函式呼叫了你寫的裝飾器,但客戶有需求說,我想實現我可以隨之控制裝飾器是否生效。

那你就不可能在得到命令的時候去原函式頭部去做刪除和新增裝飾器呼叫的命令。這是就可以用到帶引數的裝飾器,定義乙個開關,呼叫裝飾器的時候,把這個裝飾器的開關引數給傳遞進去,這樣當開關開啟的時候裝飾器生效,關閉的時候則只執行原函式的**。

舉例:開關引數為true的時候執行過程:

開關引數為false的時候執行過程:

關於python裝飾器的問題

3樓:gta小雞

假設有帶參裝飾器decorator(*args, **kwargs),使用該裝飾器裝飾函式func(*args2, **kwargs2):

@decorator(*args, **kwargs)def func(*args2, **kwargs2):

...實際上是以下寫法的語版法糖:

def func(*args2, **kwargs2):

...func = decorator(*args, **kwargs)(func)

如你所權見,呼叫decorator(*args, **kwargs)返回的是乙個callable物件(通常是乙個函式,該函式用作內層裝飾器),然後進一步呼叫此callable物件並傳遞函式func作為引數,得到乙個被裝飾過後的函式func',令變數func重新指向這個函式func'。因此,這種帶參的裝飾器通常有三層,外層裝飾器返回內層裝飾器,內層裝飾器返回裝飾後的函式。

韶關南華寺有座五層塔,塔中一層供奉的是什麼佛

此塔名 靈照塔 塔是供 奉惠能祖師的。不是供什麼佛的。靈照塔簡介如下 回靈照塔始建於唐玄宗時期答,為供奉六祖慧能的真身所建,初為木塔,唐憲宗賜名 靈照之塔 北宋初年毀於兵火,後重建 南宋初年再毀再建,後復毀。明成化十三年 1477 改建為磚塔,即為現存之塔。塔平面八角形,樓閣式,五級,高約30公尺。...

路由器工作在osi七層模型的哪一層

路由器是在osi七層網路模型中的第三層 網路層操作的。路由器內部有乙個路由表,這錶標明了如果要去某個地方,下一步應該往哪走。路由器從某個埠收到乙個資料報,它首先把鏈路層的包頭去掉 拆包 讀取目的ip位址,然後查詢路由表,若能確定下一步往哪送,則再加上鏈路層的包頭 打包 把該資料報 出去 如果不能確定...

做夢夢見臉上的面膜一層一層被剝開

你好,此夢可能意味著 今天無論是在工作 學業還是生活中,創新都是好運氣的 你應該大膽去嘗試!和戀人之間情感生活雖然平淡,但是也平穩。做夢夢見自己從自己臉上撕下了一層薄薄的皮 夢的意思 臉代表乙個人的情緒,面子,個性 在臉上撕下一層薄薄的皮,這表示自我形象的改變乙個成語叫改頭換面,就是反映去舊換新,有...