Python_閉包言秸、裝飾器

閉包

  • 內(nèi)部函數(shù)調(diào)用外部函數(shù)的變量(一個閉包就是你調(diào)用的一個函數(shù)A,這個函數(shù)A返回一個函數(shù)B給你扳缕。這個返回的函數(shù)B就叫做閉包)

  • 優(yōu)點:可以提高代碼的可復(fù)用性慌闭,減少了代碼的可移植性

  • 特點:一個獨立的空間,多個閉包互補影響躯舔,占用空間遠(yuǎn)小于實例對象驴剔;

  • 注意點:引用了外部函數(shù)的局部變量,則外部函數(shù)的局部變量沒有及時釋放粥庄,消耗內(nèi)存

  • nonlocal 修改一個函數(shù)內(nèi)部變量時使用

# 定義一個函數(shù)
def test(number):
        
        # 在函數(shù)內(nèi)部再定義一個函數(shù)丧失,并且這個函數(shù)用到了外邊函數(shù)的變量,那么將這個函數(shù)及用到的一些變量稱之為閉包
        def test_in(number_in):
                print("in text_in 函數(shù), number_in is %d" % number_in)
                return number + number_in
        # 其實這里返回的就是閉包的結(jié)果
        return text_in
# 給test函數(shù)賦值惜互,這個20就是給參數(shù)number
ret = test(20)
# 注意這里的100其實給參數(shù)的number_in
print(ret(100))
# 注意這里的200其實給參數(shù)number_in
print(ret(200))

運行結(jié)果:
in test_in 函數(shù), number_in is 100
120
in test_in 函數(shù), number_in is 200
220

裝飾器

  • 定義一個函數(shù)布讹,在運行時動態(tài)增加功能

  • 在不修改原函數(shù)的代碼的情況下琳拭,添加新的功能,可以在執(zhí)行原函數(shù)之前加描验,也可以在執(zhí)行原函數(shù)之后添加

  • 注意點:

    • 裝飾器只能在調(diào)用原函數(shù)之前或之后添加功能白嘁,而不能在函數(shù)的中間添加功能
    • 只要用裝飾器裝飾了的函數(shù),那么不管被調(diào)用多少次挠乳,都是裝飾之后的效果
  • 裝飾器(decorator)功能
    1.引入日志
    2.函數(shù)執(zhí)行時間統(tǒng)計
    3.執(zhí)行函數(shù)前預(yù)備處理
    4.執(zhí)行函數(shù)后清理功能
    5.權(quán)限校驗等場景
    6.緩存

#### 第一波 ####
def foo()
       print("foo")
foo # 表示是函數(shù)
foo() # 表示執(zhí)行foo函數(shù)
#### 第二波 ####
def foo()
       print("foo")

foo = lambda x: x + 1
foo() # 執(zhí)行l(wèi)ambda表達(dá)式权薯, 而不再是原來的foo函數(shù), 因為foo這個名字被重新指向另外一個匿名函數(shù)
  • 寫代碼要遵循開放封閉原則睡扬,它規(guī)定已經(jīng)實現(xiàn)的功能代碼不允許被修改盟蚣,但可以被擴(kuò)展
    - 封閉:對實現(xiàn)功能的代碼塊
    - 開放:擴(kuò)展開發(fā)

  • 一般情況下為了讓裝飾器更通用,可以有return

  • 裝飾的時候:誰離被裝飾的函數(shù)越近卖怜,那么就先裝誰

  • 調(diào)用的時候:誰離的遠(yuǎn)屎开,那么先調(diào)誰

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市马靠,隨后出現(xiàn)的幾起案子奄抽,更是在濱河造成了極大的恐慌,老刑警劉巖甩鳄,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件逞度,死亡現(xiàn)場離奇詭異,居然都是意外死亡妙啃,警方通過查閱死者的電腦和手機(jī)档泽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來揖赴,“玉大人馆匿,你說我怎么就攤上這事≡锘” “怎么了渐北?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長铭拧。 經(jīng)常有香客問我赃蛛,道長,這世上最難降的妖魔是什么搀菩? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任焊虏,我火速辦了婚禮,結(jié)果婚禮上秕磷,老公的妹妹穿的比我還像新娘。我一直安慰自己炼团,他們只是感情好澎嚣,可當(dāng)我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布疏尿。 她就那樣靜靜地躺著,像睡著了一般易桃。 火紅的嫁衣襯著肌膚如雪褥琐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天晤郑,我揣著相機(jī)與錄音敌呈,去河邊找鬼。 笑死造寝,一個胖子當(dāng)著我的面吹牛磕洪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播诫龙,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼析显,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了签赃?” 一聲冷哼從身側(cè)響起谷异,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎锦聊,沒想到半個月后歹嘹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡孔庭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年尺上,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片史飞。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡尖昏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出构资,到底是詐尸還是另有隱情抽诉,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布吐绵,位于F島的核電站迹淌,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏己单。R本人自食惡果不足惜唉窃,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望纹笼。 院中可真熱鬧纹份,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至元暴,卻和暖如春篷扩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背茉盏。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工鉴未, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鸠姨。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓铜秆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親享怀。 傳聞我的和親對象是個殘疾皇子羽峰,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,802評論 2 345

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)添瓷,斷路器梅屉,智...
    卡卡羅2017閱讀 134,599評論 18 139
  • 要點: 函數(shù)式編程:注意不是“函數(shù)編程”,多了一個“式” 模塊:如何使用模塊 面向?qū)ο缶幊蹋好嫦驅(qū)ο蟮母拍盍鄞傩浴?..
    victorsungo閱讀 1,468評論 0 6
  • 本章將會介紹 閉包表達(dá)式尾隨閉包值捕獲閉包是引用類型逃逸閉包自動閉包枚舉語法使用Switch語句匹配枚舉值關(guān)聯(lián)值原...
    寒橋閱讀 1,552評論 0 3
  • 每日打卡搀愧。 來評論區(qū)記錄下今天的收獲和成長吧惰聂!
    樹洞君閱讀 411評論 15 3
  • 這幅作品依然是形式感很強(qiáng),能很直接了當(dāng)?shù)淖プ∮^眾的眼球咱筛,作者概括的將天和地一分為二搓幌,言簡意賅。構(gòu)圖緊致迅箩,畫面由左及...
    巴拉巴拉2822閱讀 578評論 0 0