国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Python作用域 全局|局部|global

Pink / 2703人閱讀

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


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

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

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

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

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

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

(2)函數內部使用全局變量

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

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

(4)錯誤使用global

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

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


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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/44828.html

相關文章

  • python基礎教程:作用和命名空間

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

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

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

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

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

    leejan97 評論0 收藏0
  • python開發第四篇--函數

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

    lemanli 評論0 收藏0
  • Python3 關鍵字nonlocal和global的用法與區別

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

    PumpkinDylan 評論0 收藏0

發表評論

0條評論

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