命名空間、作用域及生命周期

命名空間.png

作用域

Tips:作用域是針對(duì)變量而言的斟珊,指申明的變量在程序里的可應(yīng)用范圍。或者稱為變量的可見性富纸。

  • 內(nèi)建作用域:
  • 全局作用域:
  • 嵌套作用域:
  • 局部作用域:
  • 代碼塊不會(huì)產(chǎn)生作用域

命名空間

Tips:命名空間是一個(gè)字典的實(shí)現(xiàn)囤踩,鍵為變量名,值是變量對(duì)應(yīng)的值晓褪。各個(gè)命名空間是獨(dú)立沒有關(guān)系的堵漱,一個(gè)命名空間中不能有重名,但是不同的命名空間可以重名而沒有任何影響涣仿。

  • 內(nèi)置命名空間:Python自帶的內(nèi)建命名空間勤庐,任何模塊均可以訪問示惊,放著內(nèi)置的函數(shù)和異常。
  • 全局命名空間:每個(gè)模塊加載執(zhí)行時(shí)創(chuàng)建的愉镰,記錄了模塊中定義的變量米罚,包括模塊中定義的函數(shù)、類丈探、其他導(dǎo)入的模塊录择、模塊級(jí)的變量與常量。
  • 局部命名空間:每個(gè)函數(shù)所擁有的命名空間碗降,記錄了函數(shù)中定義的所有變量隘竭,包括函數(shù)的入?yún)ⅰ?nèi)部定義的局部變量讼渊。

生命周期

  • 內(nèi)建命名空間:在Python解釋器啟動(dòng)時(shí)創(chuàng)建动看,一直保留到Python解釋器退出。
  • 全局命名空間:在模塊被加載時(shí)創(chuàng)建爪幻,通常一直保留到Python解釋器退出菱皆。
  • 局部命名空間:在函數(shù)調(diào)用時(shí)才被創(chuàng)建,但返回函數(shù)結(jié)果或拋出異常時(shí)被刪除笔咽。
  • Python解釋器加載階段會(huì)創(chuàng)建出內(nèi)建命名空間搔预,模塊的全局命名空間,局部命名空間是在運(yùn)行階段函數(shù)被調(diào)用時(shí)動(dòng)態(tài)創(chuàng)建出來的叶组,函數(shù)調(diào)用結(jié)束動(dòng)態(tài)銷毀拯田。
  • 各命名空間的創(chuàng)建順序:Python解釋器啟動(dòng)->創(chuàng)建內(nèi)建命名空間->加載模塊->創(chuàng)建全局命名空間->函數(shù)調(diào)用->創(chuàng)建局部命名空間。
  • 各命名空間的銷毀順序:函數(shù)調(diào)用結(jié)束->銷毀函數(shù)對(duì)應(yīng)的局部命名空間->Python虛擬機(jī)(解釋器)退出->銷毀全局命名空間->銷毀內(nèi)建命名空間甩十。

兩個(gè)關(guān)鍵字和兩個(gè)函數(shù)

global

(1)


static_code.png

static_result.png

(2)


static_code.png

static_result.png
  • 對(duì)于第一個(gè)程序來說船庇,函數(shù)外的x是全局命名空間的,并綁定的值為2侣监,調(diào)用函數(shù)創(chuàng)建局部命名空間鸭轮,函數(shù)里的x是局部命名空間的,綁定值為4橄霉,互不影響窃爷。
  • 對(duì)于第二個(gè)程序來說,同理姓蜂,函數(shù)外的x是全局命名空間的按厘,綁定值為2,調(diào)用函數(shù)創(chuàng)建局部命名空間钱慢,顯然逮京,函數(shù)里的x定義為局部命名空間的變量,x+=2分成兩步執(zhí)行束莫,先執(zhí)行x+2懒棉,再將結(jié)果賦值給x草描。但在執(zhí)行x+2時(shí),局部命名空間的x并沒綁定值策严,所以報(bào)錯(cuò)穗慕。


    global.png

    global_result.png
  • 關(guān)鍵字global的作用就是,將局部命名空間的變量申明為全局變量享钞。但是這樣做并不安全揍诽,可以采用參數(shù)和返回值的方法修改全局變量。
nonlocal
local.png

local_result.png
  • 與上面同理栗竖,inner中的x并沒綁定值暑脆,所以報(bào)錯(cuò)。


    nonlocal.png

    nonlocal_result.png
  • nonlocal聲明的變量表示在離它最近一層的局部命名空間里狐肢。
globals()和locals()
  • globals():用于查看全局命名空間的變量添吗。
  • locals():用于查看當(dāng)前局部命名空間的變量。
  • 需要注意的是份名,當(dāng)在全局命名空間使用locals()時(shí)碟联,查看的是全局命名空間的變量。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末僵腺,一起剝皮案震驚了整個(gè)濱河市鲤孵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌辰如,老刑警劉巖普监,帶你破解...
    沈念sama閱讀 222,807評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異琉兜,居然都是意外死亡凯正,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門豌蟋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來廊散,“玉大人,你說我怎么就攤上這事梧疲≡识茫” “怎么了?”我有些...
    開封第一講書人閱讀 169,589評(píng)論 0 363
  • 文/不壞的土叔 我叫張陵幌氮,是天一觀的道長(zhǎng)缭受。 經(jīng)常有香客問我,道長(zhǎng)浩销,這世上最難降的妖魔是什么贯涎? 我笑而不...
    開封第一講書人閱讀 60,188評(píng)論 1 300
  • 正文 為了忘掉前任听哭,我火速辦了婚禮慢洋,結(jié)果婚禮上塘雳,老公的妹妹穿的比我還像新娘。我一直安慰自己普筹,他們只是感情好败明,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著太防,像睡著了一般妻顶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蜒车,一...
    開封第一講書人閱讀 52,785評(píng)論 1 314
  • 那天讳嘱,我揣著相機(jī)與錄音,去河邊找鬼酿愧。 笑死沥潭,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的嬉挡。 我是一名探鬼主播钝鸽,決...
    沈念sama閱讀 41,220評(píng)論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼庞钢!你這毒婦竟也來了拔恰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,167評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤基括,失蹤者是張志新(化名)和其女友劉穎颜懊,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體阱穗,經(jīng)...
    沈念sama閱讀 46,698評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡饭冬,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評(píng)論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了揪阶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片昌抠。...
    茶點(diǎn)故事閱讀 40,912評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖鲁僚,靈堂內(nèi)的尸體忽然破棺而出炊苫,到底是詐尸還是另有隱情,我是刑警寧澤冰沙,帶...
    沈念sama閱讀 36,572評(píng)論 5 351
  • 正文 年R本政府宣布侨艾,位于F島的核電站,受9級(jí)特大地震影響拓挥,放射性物質(zhì)發(fā)生泄漏唠梨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評(píng)論 3 336
  • 文/蒙蒙 一侥啤、第九天 我趴在偏房一處隱蔽的房頂上張望当叭。 院中可真熱鬧茬故,春花似錦、人聲如沸蚁鳖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)醉箕。三九已至钾腺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間讥裤,已是汗流浹背放棒。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留己英,地道東北人哨查。 一個(gè)月前我還...
    沈念sama閱讀 49,359評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像剧辐,于是被迫代替她去往敵國(guó)和親寒亥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評(píng)論 2 361

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

  • 一同波、PyCharm下載及安裝 學(xué)習(xí)Demo 官網(wǎng)下載地址選擇平臺(tái)及版本鳄梅,社區(qū)版是免費(fèi)的,專業(yè)版收費(fèi)未檩。若是選擇專業(yè)版...
    小哥_xiaoge閱讀 3,347評(píng)論 0 1
  • 〇戴尸、前言 本文共108張圖,流量黨請(qǐng)慎重冤狡! 歷時(shí)1個(gè)半月孙蒙,我把自己學(xué)習(xí)Python基礎(chǔ)知識(shí)的框架詳細(xì)梳理了一遍。 ...
    Raxxie閱讀 18,970評(píng)論 17 410
  • 1. 寫作可以是專業(yè)的悲雳,更可以是業(yè)余的挎峦。 很多人醉心于提升自己的文筆,很多人執(zhí)著于筆下人物的刻畫合瓢,在簡(jiǎn)書上坦胶,還有很...
    香火長(zhǎng)明燈閱讀 414評(píng)論 0 1
  • 早餐的不速之客 今年4月1日在澳大利亞漢密爾頓島珊瑚景酒店吃自助早餐。餐廳是開敞式的,窗戶沒...
    漢翔閱讀 243評(píng)論 0 1
  • 近來景德鎮(zhèn)的天氣像是進(jìn)入夏天了顿苇,想著天熱了真好掷匠,少穿些衣服,多吹吹風(fēng)岖圈。回來好長(zhǎng)一段時(shí)間都沒常出門钙皮,前兩天約了幾個(gè)老...
    陳酸豆閱讀 251評(píng)論 0 0