python @ 用法

轉(zhuǎn)載自python @ 用法

簡(jiǎn)單的說呀狼,@裝飾器就是用來提供調(diào)用的界逛,

def funA(arg):
    print 'A'
    a=arg()

@funA
def funB():
    print 'B'

輸出結(jié)果為

此處的@相當(dāng)于funA(funB())右锨。


裝飾器背后的主要?jiǎng)訖C(jī)源自python面向?qū)ο缶幊谭环颍b飾器是在函數(shù)調(diào)用之上的修飾咏窿,這些修飾僅是當(dāng)聲明一個(gè)函數(shù)或者方法的時(shí)候斟或,才會(huì)應(yīng)用的額外調(diào)用。
裝飾器的語法以@開頭集嵌,接著是裝飾器韓式的名字和可選的參數(shù)萝挤。緊跟著裝飾器聲明的是被修飾的函數(shù),和修飾函數(shù)的可選參數(shù)根欧。

class MyClass(obj):
    @staticmethod
    def staticFoo():
    ...

利用staticmethod內(nèi)建函數(shù)來將這個(gè)函數(shù)“轉(zhuǎn)化”為靜態(tài)方法怜珍,利用裝飾器會(huì)很簡(jiǎn)潔。

@g
@f
def foo():
...

..與foo=g(f(foo))相同
有參數(shù)和無參數(shù)的裝飾器

@deco
def foo():
pass

…非常直接
foo=deco(foo)

有參數(shù)的裝飾器

@decomaker(deco_args)
deffoo():
    pass

需要自己返回以函數(shù)作為參數(shù)的裝飾器凤粗,換句話說酥泛,decomaker()用deco_args做了些事情并返回函數(shù)對(duì)象,而該函數(shù)正是以foo作為其參數(shù)的裝飾器,相當(dāng)于:

foo=decomaker(deco_args)(foo) 

多個(gè)裝飾器的例子揭璃,其中一個(gè)裝飾器帶有一個(gè)參數(shù):

@deco1(deco_args)
@deco2
def func():pass

等價(jià)于:

func=deco1(deco_args) (deco2(func))

什么是裝飾器

現(xiàn)在我們知道裝飾器實(shí)際上就是一個(gè)函數(shù)晚凿,我們也知道他們接受函數(shù)對(duì)象,但他們是怎么處理那些函數(shù)瘦馍?當(dāng)你包裝一個(gè)函數(shù)的時(shí)候歼秽,你最終會(huì)調(diào)用它,最棒的是我們能夠在包裝的環(huán)境下在合適的時(shí)機(jī)調(diào)用它情组,我們?cè)趫?zhí)行函數(shù)之前燥筷,可以運(yùn)行那些預(yù)備代碼,如 post-morren分析院崇,也可以在執(zhí)行代碼之后做個(gè)清理工作肆氓,所以當(dāng)你看見一個(gè)裝飾器函數(shù)的時(shí)候,很可能在里面找到這樣一些代碼底瓣,它定義了某個(gè)函數(shù)并在定義內(nèi)的某處嵌入了對(duì)目標(biāo)函數(shù)的調(diào)用或者至少一些引用谢揪。從本質(zhì)上看,這些特征引入了java開發(fā)者稱之為AOP的概念捐凭,可以考慮在裝飾器中置入通用功能的代碼來降低程序復(fù)雜度拨扶。

可以用裝飾器來:

  • 引入日志
  • 增加計(jì)時(shí)邏輯來檢測(cè)性能
  • 給函數(shù)加入事物能力。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末茁肠,一起剝皮案震驚了整個(gè)濱河市患民,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌垦梆,老刑警劉巖匹颤,帶你破解...
    沈念sama閱讀 216,692評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異托猩,居然都是意外死亡印蓖,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門站刑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來另伍,“玉大人鼻百,你說我怎么就攤上這事绞旅。” “怎么了温艇?”我有些...
    開封第一講書人閱讀 162,995評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵因悲,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我勺爱,道長(zhǎng)晃琳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,223評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮卫旱,結(jié)果婚禮上人灼,老公的妹妹穿的比我還像新娘。我一直安慰自己顾翼,他們只是感情好投放,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著适贸,像睡著了一般灸芳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拜姿,一...
    開封第一講書人閱讀 51,208評(píng)論 1 299
  • 那天烙样,我揣著相機(jī)與錄音,去河邊找鬼蕊肥。 笑死谒获,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的壁却。 我是一名探鬼主播究反,決...
    沈念sama閱讀 40,091評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼儒洛!你這毒婦竟也來了精耐?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,929評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤琅锻,失蹤者是張志新(化名)和其女友劉穎卦停,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體恼蓬,經(jīng)...
    沈念sama閱讀 45,346評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡惊完,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了处硬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片小槐。...
    茶點(diǎn)故事閱讀 39,739評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖荷辕,靈堂內(nèi)的尸體忽然破棺而出凿跳,到底是詐尸還是另有隱情,我是刑警寧澤疮方,帶...
    沈念sama閱讀 35,437評(píng)論 5 344
  • 正文 年R本政府宣布控嗜,位于F島的核電站,受9級(jí)特大地震影響骡显,放射性物質(zhì)發(fā)生泄漏疆栏。R本人自食惡果不足惜曾掂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望壁顶。 院中可真熱鬧珠洗,春花似錦、人聲如沸若专。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽富岳。三九已至蛔糯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間窖式,已是汗流浹背蚁飒。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留萝喘,地道東北人淮逻。 一個(gè)月前我還...
    沈念sama閱讀 47,760評(píng)論 2 369
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像阁簸,于是被迫代替她去往敵國(guó)和親爬早。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評(píng)論 2 354

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理启妹,服務(wù)發(fā)現(xiàn)筛严,斷路器,智...
    卡卡羅2017閱讀 134,652評(píng)論 18 139
  • 前言 人生苦多饶米,快來 Kotlin 桨啃,快速學(xué)習(xí)Kotlin! 什么是Kotlin檬输? Kotlin 是種靜態(tài)類型編程...
    任半生囂狂閱讀 26,201評(píng)論 9 118
  • 咸鴨糯米飯照瘾,年前是囤糧備戰(zhàn),節(jié)后是去庫存[呲牙]
    多來米2017閱讀 712評(píng)論 3 1
  • 怎樣用站不住腳的退縮 去躲避不深刻的快樂 恍惚間忘了該說什么 單薄得失去了自我 只剩下不知所措的資格 去漂泊做一個(gè)...
    愛嗨愛嗨呦閱讀 187評(píng)論 0 1
  • Dassault Systèmes by sennchi
    sennchi閱讀 244評(píng)論 0 0