成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python作用域 全局|局部|global

Pink / 2706人閱讀

摘要:當函數(shù)被調(diào)用時,局部變量進入聲明它們的作用域。不管全局域中有沒有用到該變量名,函數(shù)中使用的將是局部變量。這句話是有歧義的,既可以表示引用全局變量,也可以是創(chuàng)建一個新的局部變量。


在使用變量的時候,有時候會發(fā)生變量引用錯誤,或者程序運行完,程序得到的結(jié)果與預期存在差別。

記住一條原則:任何變量在使用前,都必須確保“變量引用是否明確”!

全局變量:作用域是整個腳本,除非被刪除掉,否則他們存活到腳本結(jié)束,且對于所有函數(shù),他們的值是可以被訪問的。

局部變量:作用域局限在定義的函數(shù),依賴于函數(shù)現(xiàn)階段是否處于活動。當函數(shù)被調(diào)用時,局部變量進入聲明它們的作用域。一旦函數(shù)完成,變量將會離開其作用域。

我們來看一些例子:
(1)局部變量
函數(shù)內(nèi)部的變量名如果第一次出現(xiàn),且出現(xiàn)在“=”左邊,即被視為定義一個局部變量。不管全局域中有沒有用到該變量名,函數(shù)中使用的將是局部變量。

ps:此處會報錯。因為num首先被當成了一個局部變量,到等號右側(cè)后發(fā)現(xiàn)這個變量還沒賦值就被用于計算,于是報錯。
Num += 100:這句話是有歧義的,num既可以表示引用全局變量,也可以是創(chuàng)建一個新的局部變量。
Python中,默認創(chuàng)建局部變量并使用它,除非顯式聲明global

(2)函數(shù)內(nèi)部使用全局變量

此時num2引用的是全局變量中的num2。此處是明確的,因為把num2當做一個局部變量的話,會報錯,只能是全局的num2,故不需要聲明global。

(3)函數(shù)內(nèi)部修改全局變量
在函數(shù)中,如果想使用并修改到全局變量,則需要使用到global

(4)錯誤使用global

if __name__ == ‘__main__’:中使用global

最好的直接解決這個問題的方法是把global聲明從 if __name__==’__main__’: 中刪除,在這里是不需要聲明global的。
因為與其他語言不同,Python中的if語句不會再引入一個新的作用域(scope),任何變量分配的都是全局變量(global)。作為一個全局變量,在使用變量名之前是不允許再一次聲明為全局變量。
if __name__==’__main__’: 中的變量都是全局的,所以在main中間再一次聲明global是錯誤的,所以系統(tǒng)會發(fā)出警告。


? thanks for watching, keep on updating...
點個贊再走吧

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/44828.html

相關(guān)文章

  • python基礎(chǔ)教程:作用和命名空間

    摘要:正如我們前面舉的張三的例子那樣,不同命名空間中的名稱之間沒有任何關(guān)系。作用域作用域,是一個命名空間可直接發(fā)放完的代碼的文本區(qū)域。刪除也是如此,語句會從局部命名空間的引用中移除對的綁定。 命名空間和作用域的概念我們之前也提到過,比如內(nèi)置函數(shù)globals(),函數(shù)中變量的作用域,模塊使用的import等等。這些可能讓我們對這兩個概念有了大致的理解。本節(jié)再詳細探討一下。 showImg(h...

    wangzy2019 評論0 收藏0
  • Python 的命名空間

    摘要:真正管理這些名子的事物就是本文的主角命名空間。閉包命名空間閉包函數(shù)的名稱空間引入。函數(shù)調(diào)用時產(chǎn)生新的局部命名空間函數(shù)返回結(jié)果拋出異常時釋放命名空間,每一次遞歸都生成一個命名空間。標識符產(chǎn)生地點決定標識符所處的命名空間。 懶得掃全文的童鞋,可以直接跳到最后看總結(jié)。我們先從一個簡單的栗子說起: 栗子 a 文件中有變量 va 以及類 A,b 文件導入 a 中class A ,并打印出 A: ...

    ralap 評論0 收藏0
  • PyTips 0x04 - Python 閉包與作用

    摘要:項目地址閉包在計算機科學中,閉包英語,又稱詞法閉包或函數(shù)閉包,是引用了自由變量的函數(shù)。這個被引用的自由變量將和這個函數(shù)一同存在,即使已經(jīng)離開了創(chuàng)造它的環(huán)境也不例外。 項目地址:https://git.io/pytips 閉包(Closure) 在計算機科學中,閉包(英語:Closure),又稱詞法閉包(Lexical Closure)或函數(shù)閉包(function closures),是...

    leejan97 評論0 收藏0
  • python開發(fā)第四篇--函數(shù)

    摘要:第一種情況打印結(jié)果為第二種打印結(jié)果為因為如果默認參數(shù)是一個可變的數(shù)據(jù)類型,那么他在內(nèi)存中永遠是一個。 名稱空間與作用域 1.變量儲存在一個內(nèi)存空間中 2.當程序運行的時候代碼從上到下依次執(zhí)行,它會將變量與值的關(guān)系存儲在一個空間中,這個空間叫名稱空間,命名空間,全局名稱空間 3.當程序遇到函數(shù)時,它會將函數(shù)名存在內(nèi)存中,函數(shù)體漠不關(guān)心 4.當程序執(zhí)行的時候,內(nèi)存會臨時開辟一個空間,...

    lemanli 評論0 收藏0
  • Python3 關(guān)鍵字nonlocal和global的用法與區(qū)別

    摘要:關(guān)鍵字在中,閉包只能讀外部函數(shù)的變量,而不能改寫它。注意關(guān)鍵字是中出現(xiàn)的所以在中無法直接使用關(guān)鍵字里只有種作用域全局作用域和局部作用域。兩者使用的范圍不同。 關(guān)鍵字nonlocal 在Python 2.x中,閉包只能讀外部函數(shù)的變量,而不能改寫它。為了解決這個問題,Python 3.x引入了nonlocal關(guān)鍵字,在閉包內(nèi)用nonlocal聲明變量,就可以讓解釋器在外層函數(shù)中查找變量名...

    PumpkinDylan 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<