#Python筆記# —— 閉包

每日計(jì)劃:2017.05.21

<思維導(dǎo)圖>
</br>

概念

維基百科是這樣說的:

閉包:英語Closure兄世,又稱詞法閉包(Lexical Closure)或函數(shù)閉包(function closures)辫继,是引用了自由變量的函數(shù)蛋褥。這個被引用的自由變量將和這個函數(shù)一同存在冶匹,即使離開了創(chuàng)造它的環(huán)境也不例外。所以有另一種說法認(rèn)為閉包 是由函數(shù)和與其相關(guān)的引用環(huán)境組合而成的實(shí)體橡庞。閉包在運(yùn)行時(shí)可以有多個實(shí)例荸频,不同的引用環(huán)境和相同的函數(shù)組合可以產(chǎn)生不同的實(shí)例。

自由變量:定義在外部函數(shù)內(nèi)疚宇,但是由內(nèi)部函數(shù)引用(或使用)的變量

簡單的說亡鼠,是在一個函數(shù)A中,定義另一個函數(shù)B敷待,這個B函數(shù)就是閉包间涵,調(diào)用A函數(shù)當(dāng)中傳遞的參數(shù)就是自由變量
舉例:

def func1():
    a=1
    def func2()
        print var
    return func2 # python可以返回一個函數(shù)

</br>
</br>

閉包特點(diǎn)和作用

1、閉包的詞法變量 既不屬于全局名稱空間榜揖,也不屬于局部名稱空間勾哩。與對象不同,對象存活在一個對象的名稱空間举哟,但是閉包變量存活在一個 函數(shù) 的名稱空間和作用域思劳。

2、閉包引用的自由變量將與函數(shù)一同存在妨猩,即使離開了創(chuàng)作它的環(huán)境也不例外潜叛,可以用來保護(hù)或隱藏一個變量,不會在調(diào)用后被垃圾回收機(jī)制(garbage collection)回收
3、閉包和類等有些類似钠导,皆是對代碼進(jìn)行了一些封裝震嫉,提高代碼的可復(fù)用性
4、閉包可用于間接訪問一個變量牡属,但是不能修改外部環(huán)境的局部變量
5票堵、閉包不會造成內(nèi)存泄露
6、閉包有利于并行運(yùn)算

def func1():
    a=1
    def func2():
        a=8
        print a
    
    print a
    func2()
    print a


#結(jié)果輸出
1
8
1

</br>
一個常見的錯誤代碼

def func1():
    var=1
    def func2():
        var=var+1
        print var
        retrun var
    return func2()

func1()
#結(jié)果輸出
......
UnboundLocalError: local variable 'var' referenced before assignment

</br>
前面的命名空間和作用域部分已經(jīng)講過類似的逮栅,python默認(rèn)函數(shù)中=賦值語句左邊皆為局部變量悴势。例子中func2()函數(shù)則認(rèn)定var=var+1左邊的var為局部變量,然后接著找右邊的var措伐,但是找不到var具體值特纤,于是報(bào)錯。
解決方法就是 將a設(shè)置為一個容器侥加。

def func1():
    var=[1]
    def func2():
        var[0]=var[0]+1
        print var[0]
        return var[0]
    func2()


func1()
#結(jié)果輸出
<function func2 at 0x0000000002A81B38>

不過這樣還是顯得麻煩捧存,python3中可以使用nonlocal a,聲明a不是閉包中的局部變量

</br>

閉包應(yīng)用實(shí)例

還沒寫完担败,先去上課

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末昔穴,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子提前,更是在濱河造成了極大的恐慌吗货,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件狈网,死亡現(xiàn)場離奇詭異宙搬,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)拓哺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門勇垛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人士鸥,你說我怎么就攤上這事闲孤。” “怎么了础淤?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵崭放,是天一觀的道長。 經(jīng)常有香客問我鸽凶,道長币砂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任玻侥,我火速辦了婚禮决摧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己掌桩,他們只是感情好边锁,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著波岛,像睡著了一般茅坛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上则拷,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天贡蓖,我揣著相機(jī)與錄音,去河邊找鬼煌茬。 笑死斥铺,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的坛善。 我是一名探鬼主播晾蜘,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼眠屎!你這毒婦竟也來了剔交?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤组力,失蹤者是張志新(化名)和其女友劉穎省容,沒想到半個月后抖拴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體燎字,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年阿宅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了候衍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡洒放,死狀恐怖蛉鹿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情往湿,我是刑警寧澤妖异,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站领追,受9級特大地震影響他膳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜绒窑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一棕孙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦蟀俊、人聲如沸钦铺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽矛洞。三九已至,卻和暖如春烫映,著一層夾襖步出監(jiān)牢的瞬間缚甩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工窑邦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留擅威,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓冈钦,卻偏偏與公主長得像郊丛,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子瞧筛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評論 2 354

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

  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 3,805評論 1 10
  • 《ijs》速成開發(fā)手冊3.0 官方用戶交流:iApp開發(fā)交流(1) 239547050iApp開發(fā)交流(2) 10...
    葉染柒丶閱讀 5,134評論 0 7
  • 閉包: 官方”的解釋是:閉包是一個擁有許多變量和綁定了這些變量的環(huán)境的表達(dá)式(通常是一個函數(shù))厉熟,因而這些變量也是該...
    小裁縫sun閱讀 616評論 0 5
  • ● 閉包基礎(chǔ) ● 閉包作用 ● 閉包經(jīng)典例子 ● 閉包應(yīng)用 ● 閉包缺點(diǎn) ● 參考資料 1、閉包基礎(chǔ) 作用域和作...
    lzyuan閱讀 934評論 0 0
  • 愿望清單:1 換一份工作较幌,別想現(xiàn)在這樣重復(fù)簡單的勞動2 有自己的書桌自己的房間自己的書柜√3 換手機(jī)揍瑟,現(xiàn)在的掉電太...
    為了明日_will閱讀 194評論 0 0