Python中@裝飾器的作用

轉(zhuǎn)載請注明出處:http://www.reibang.com/u/0d277af5103c

要了解python中@裝飾器的作用株憾,首先要記住這么幾點:

  • 1 . 裝飾器符號“@”屬于語法糖锣光,什么意思呢淘这?就是說总处,我不按照@裝飾器的語法要求來寫漓帅,而是按照一般python的語法要求來寫完全可以蚪缀。那么用@裝飾器的格式來寫的目的就是為了書寫簡單方便

  • 2. 裝飾器的作用是什么呢? 簡單的理解就是:裝飾原有的函數(shù)贺辰。什么意思呢户盯?比如有一個函數(shù)func(a, b),它的功能是求a,b的差值饲化,我現(xiàn)在有一個需求莽鸭,就是想對函數(shù)功能再裝飾下,求完差值后再取絕對值吃靠,但是不能在func函數(shù)內(nèi)部實現(xiàn)硫眨,這時候就需要裝飾器函數(shù)了,比如func = decorate(func)函數(shù)巢块,將func函數(shù)作為參數(shù)傳遞給decorate函數(shù)礁阁,由decorate來豐富func函數(shù)巧号,豐富完成后再返回給func,此時func的功能就豐富了。

  • 3.python的常識姥闭,函數(shù)和其他任何東西一樣丹鸿,都是對象。這意味著可以將函數(shù)當做實參傳遞給函數(shù)棚品,或者在函數(shù)中將函數(shù)作為返回值返回靠欢。例碼驗證:

def add(x, y):
... return x + y
def sub(x, y):
... return x - y
def apply(func, x, y): # 1
... return func(x, y) # 2
apply(add, 2, 1) # 3
3
apply(sub, 2, 1)
1
了解上述觀點后,可以先不用@符號來寫一個簡單的裝飾器
def decorate(func):

def decorate(func):

def inner(a, b):

    ret = func(a, b):

    return abs(ret)

return inner

def sub(a, b):

return a-b

sub(3, 4)

... -1

sub = decorate(sub)

sub(3, 4)

1

對于sub = decorate(sub)的理解铜跑。 最終會將inner的值傳給sub 门怪,此時執(zhí)行sub(3, 4),其實是執(zhí)行decorate中的inner锅纺,所以為1.

那么為了書寫方便掷空,將sub=decorate(sub)換為@decorate,并放在sub的定義面前囤锉,即:

@decorate

def sub(a, b):

return a-b

只是書寫不同坦弟,結(jié)果相同。

希望可以幫助到大家嚼锄!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末减拭,一起剝皮案震驚了整個濱河市蔽豺,隨后出現(xiàn)的幾起案子区丑,更是在濱河造成了極大的恐慌,老刑警劉巖修陡,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件沧侥,死亡現(xiàn)場離奇詭異,居然都是意外死亡魄鸦,警方通過查閱死者的電腦和手機宴杀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拾因,“玉大人旺罢,你說我怎么就攤上這事【罴牵” “怎么了扁达?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蠢熄。 經(jīng)常有香客問我跪解,道長,這世上最難降的妖魔是什么签孔? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任叉讥,我火速辦了婚禮窘行,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘图仓。我一直安慰自己罐盔,他們只是感情好,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布透绩。 她就那樣靜靜地躺著翘骂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪帚豪。 梳的紋絲不亂的頭發(fā)上碳竟,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天,我揣著相機與錄音狸臣,去河邊找鬼莹桅。 笑死,一個胖子當著我的面吹牛烛亦,可吹牛的內(nèi)容都是我干的诈泼。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼煤禽,長吁一口氣:“原來是場噩夢啊……” “哼铐达!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起檬果,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤瓮孙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后选脊,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體杭抠,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年恳啥,在試婚紗的時候發(fā)現(xiàn)自己被綠了偏灿。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡钝的,死狀恐怖翁垂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情硝桩,我是刑警寧澤沿猜,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站亿柑,受9級特大地震影響邢疙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一疟游、第九天 我趴在偏房一處隱蔽的房頂上張望呼畸。 院中可真熱鬧,春花似錦颁虐、人聲如沸蛮原。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽儒陨。三九已至,卻和暖如春笋籽,著一層夾襖步出監(jiān)牢的瞬間蹦漠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工车海, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留笛园,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓侍芝,卻偏偏與公主長得像研铆,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子州叠,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 呵呵棵红!作為一名教python的老師,我發(fā)現(xiàn)學(xué)生們基本上一開始很難搞定python的裝飾器咧栗,也許因為裝飾器確實很難懂...
    TypingQuietly閱讀 19,518評論 26 186
  • 原文出處: dzone 譯文出處:Wu Cheng(@nullRef) 1. 函數(shù) 在python中逆甜,函數(shù)通過...
    DraculaWong閱讀 506評論 0 3
  • 想記錄下對你的感覺,于是有了下面這篇文章楼熄。 第一個給我寫表白信的人是你忆绰,我沒想到浩峡。 前兩天重新翻看那幾頁信可岂,細膩如...
    暮之心閱讀 185評論 2 0
  • 世界衛(wèi)生組織建議:嬰兒應(yīng)當在生命最初的六個月內(nèi)接受純母乳喂養(yǎng)以實現(xiàn)最佳的成長缕粹、發(fā)育和健康。此后纸淮,為滿足其不斷發(fā)展的...
    是飯飯呦閱讀 210評論 0 0
  • MJRefresh原理分析從MJRefresh源碼學(xué)習(xí)上拉下刷新的基本原理MJRefresh源碼閱讀使用Xtrac...
    sellse閱讀 237評論 1 0