2018-08-14

入門與進階:掌握了之前學(xué)的(枚舉之前)基礎(chǔ)的語法,就可以完成一般的應(yīng)用程序了牧抽。
靠基礎(chǔ)語法可以寫出代碼嘉熊,帶不能寫出優(yōu)質(zhì)的、可維護的代碼扬舒。
這包括開發(fā)包或者類庫阐肤,需要提供給別人用,才需要考慮封裝性讲坎。
開發(fā)包或者類庫孕惜,也是基于開發(fā)了很多業(yè)務(wù)邏輯相同的程序之后,有實際需要才有的晨炕。

一衫画、一切皆對象

  1. 函數(shù)式編程:當(dāng)自己認為寫的代碼別扭,繁瑣時嘗試使用函數(shù)式編程瓮栗。
  2. 閉包:閉包和函數(shù)關(guān)系很大削罩。
    函數(shù):只是一段可執(zhí)行的代碼,并不是對象费奸。
    python中一切皆對象弥激,函數(shù)也是對象。
    python中的函數(shù)不僅可以賦值給變量货邓,還可以作為另外一個函數(shù)的參數(shù)傳遞秆撮,也可以作為另外一個函數(shù)的返回結(jié)果。
image.png

二换况、閉包

  1. Python在函數(shù)內(nèi)部還可以定義函數(shù)职辨,但該函數(shù)的作用域只在外部函數(shù)的內(nèi)部有效盗蟆,除非作為外部函數(shù)的返回值被返回,在外部函數(shù)的外部用一個變量接收后就可以調(diào)用它了舒裤。
  2. 閉包定義:由函數(shù)及其在定義時外部的環(huán)境變量(不能是全局變量)構(gòu)成的整體喳资。

閉包 = 函數(shù) + 環(huán)境變量(函數(shù)定義時)

  1. 如圖,可以通過函數(shù)的內(nèi)置變量 __ closure __ 來訪問函數(shù)的環(huán)境變量
image.png

閉包的意義在于保存了一個環(huán)境腾供。
尤其是函數(shù)調(diào)用函數(shù)時仆邓,如果沒有閉包,很容易被外部變量所影響伴鳖。

閉包必須滿足兩個條件:

  • 函數(shù)嵌套函數(shù)
  • 內(nèi)部函數(shù)需要引用父類函數(shù)的變量


def f1():
    a = 10
    def f2():
        a = 20  # 這時的a被python認為是局部變量节值,局部變量是不可能影響外部的變量
        print(a)
    print(a)
    f2()
    print(a)

f1()

輸出結(jié)果:此時的f1() 并不是閉包函數(shù)。因為內(nèi)部函數(shù)有局部變量榜聂,并沒有引用外部函數(shù)的變量搞疗。
10
20
10

三、旅行者行走的問題

(一)非閉包的方式解決問題

ps:
一個容易犯的關(guān)于變量認識上的錯誤

origin = 0
def go(step):
      new_pos = origin + step
      origin = new_pos
      return origin

此時會報錯說origin在函數(shù)內(nèi)未被定義
而把origin = new_pos去掉之后則不會報錯须肆。
關(guān)于兩者的不同匿乃,在一般情況下,根據(jù)變量的作用域鏈豌汇,origin在函數(shù)內(nèi)未被定義時會去找上一級的同名變量幢炸。
但是一旦在函數(shù)內(nèi)origin出現(xiàn)了賦值語句的左側(cè),則會被認為是函數(shù)內(nèi)被定義拒贱,
成為了一個局部變量宛徊,不會再去尋找上一級。結(jié)果執(zhí)行語句時就報錯了柜思。


ps: global

(二)閉包的方式解決問題

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末岩调,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子赡盘,更是在濱河造成了極大的恐慌号枕,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件陨享,死亡現(xiàn)場離奇詭異葱淳,居然都是意外死亡,警方通過查閱死者的電腦和手機抛姑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門赞厕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人定硝,你說我怎么就攤上這事皿桑。” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵诲侮,是天一觀的道長镀虐。 經(jīng)常有香客問我,道長沟绪,這世上最難降的妖魔是什么刮便? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮绽慈,結(jié)果婚禮上恨旱,老公的妹妹穿的比我還像新娘。我一直安慰自己坝疼,他們只是感情好搜贤,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著裙士,像睡著了一般入客。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上腿椎,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機與錄音夭咬,去河邊找鬼啃炸。 笑死,一個胖子當(dāng)著我的面吹牛卓舵,可吹牛的內(nèi)容都是我干的南用。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼掏湾,長吁一口氣:“原來是場噩夢啊……” “哼裹虫!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起融击,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤筑公,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后尊浪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體匣屡,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年拇涤,在試婚紗的時候發(fā)現(xiàn)自己被綠了捣作。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡鹅士,死狀恐怖券躁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤也拜,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布旭贬,位于F島的核電站,受9級特大地震影響搪泳,放射性物質(zhì)發(fā)生泄漏稀轨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一岸军、第九天 我趴在偏房一處隱蔽的房頂上張望奋刽。 院中可真熱鬧,春花似錦艰赞、人聲如沸佣谐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽狭魂。三九已至,卻和暖如春党觅,著一層夾襖步出監(jiān)牢的瞬間雌澄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工杯瞻, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留镐牺,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓魁莉,卻偏偏與公主長得像睬涧,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子旗唁,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

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

  • 1畦浓、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明先生_X自主閱讀 15,979評論 3 119
  • 離職一年多了,偶爾還是會想起以前公司里的一位員工检疫。還記得當(dāng)年和他聊天時特有感觸讶请,今天把這篇采訪文章翻出來貼...
    大暖小佳閱讀 363評論 3 1
  • 城市的嘆息凝聚在喧囂的聲浪尖上搖擺繁華中孤獨,死亡前的哀怨等待到沉默里是一份寂寞电谣,活著的傲有悲涼陪伴在身邊將忘卻秽梅,...
    走在路上的沉默閱讀 327評論 12 17
  • “夫君,你沒事吧剿牺?”剛進門的女子慌忙拉住差點倒下的男人企垦。“碧絲晒来,我钞诡,我沒事。”身體羸弱荧降,容顏憔悴約莫二十七八歲的男...
    兩朵隔墻花閱讀 298評論 0 0