全局變量與局部變量兩者的本質區別就是在于作用域
用通俗的話來理解的話,
全局變量是在整個py文件中聲明,全局范圍內都可以訪問
局部變量是在某個函數中聲明的,只能在該函數中調用它,如果試圖在超出范圍的地方調用,程序就爆掉了
如果在函數內部定義與某個全局變量一樣名稱的局部變量,就可能會導致意外的效果,可能不是你期望的。因此不建議這樣使用,這樣會使得程序很不健全
直接來看幾個例子來理解全局變量和局部變量的區別吧:
Demo1:
deffun(x):y=2print("乘法的運行結果:",x*y)num1=1print("初始num1=",num1)fun(num1)print("y的值是:",y)
運行結果:
報錯的原因是因為試圖訪問局部變量,但是訪問的地方不在該變量y的作用域中
Demo2:
deffun():num1=2print("函數內修改后num1=",num1)num1=1print("初始num1=",num1)fun()print("運行完函數后num1=",num1)
運行結果:
可以看到在函數內部對全局變量的修改后,在函數執行完畢,修改的結果是無效的,全局變量并不會受到影響
再看:
Demo3:
deffun():num1*=2print("函數內修改后num1=",num1)num1=1print("初始num1=",num1)fun()print("運行完函數后num1=",num1)
運行結果:
報錯了。這是因為在fun()函數使用了局部變量num1,它只是個跟全局變量同名的局部變量,使用前還是要賦值,因此再次強調不要這樣使用
global關鍵字
如果真的想要在函數體內修改全局變量的值,就要使用global關鍵字
Demo4:
deffun():globalnum1num1=2print("函數內修改后num1=",num1)num1=1print("初始num1=",num1)fun()print("運行完函數后num1=",num1)
運行結果:
使用global關鍵字就是告訴python編譯器這個變量不是局部變量而是全局變量,其實有點像是"引用"的意思
nonlocal關鍵字
再看看另一個跟變量相關的關鍵字nonlocal,字面意思就是指當前的這個變量不是局部變量。nonlocal是Python3.0中新增的關鍵字,python2.x不支持
先來看看下面這段代碼
deffun():num2=3deffun2():num2*=2print("num2=",num2)returnfun2()fun()
運行結果:
錯誤的原因跟前面的差不多,就是使用了未定義的局部變量,然而num2也不是全局變量,只是fun2函數的外層變量,強行使用global定義num2的話同樣會報錯(不信你試試)
這時候需要使用nonlocal關鍵字:
deffun():num2=3deffun2():nonlocalnum2num2*=2print("num2=",num2)returnfun2()fun()
運行結果:
關于Python中全局變量和局部變量有什么不同就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
莊家出貨的手法有哪些?1、一字出貨法這種操作手法很兇悍,在于短期快速拉高股價后,又以低于現價約3%的價格賣出,價格瞬間掉下三個點很容易吸引很多買盤,每當“賣一”快被消耗完畢,有新的賣單壓上去,一直到空頭手中無籌碼,這個過程只需要幾分鐘,在分時圖上留下一個“一”字這種出貨方法適用于熱門股。2、釣魚線出貨法這種手法,在分時圖上留下酷似釣魚的形狀,適用于熱...
民生銀行客服電話是多少?民生銀行客服電話:95568(1)民生銀行客服電話是面向個人和企業客戶,是集查詢、轉帳、結算于一體的自助業務系統。該系統為個人客戶提供帳戶信息查詢、轉帳、匯款等多樣化金融服務;民生個人卡、單位卡、活期一本通客戶和企業客戶無須到銀行辦理開通手續,就可以隨時隨地通過撥打我行電話銀行服務號碼,獲得已經開通的并將不斷拓展的金融服務。(2)收費標準同撥打市話的收費標準,不收取長途通話...
(資料圖片)今天來聊聊關于門禁卡怎么區分id和ic,門禁卡是ic卡還是id卡的文章,現在就為大家來簡單介紹下門禁卡怎么區分id和ic,門禁卡是ic卡還是id卡,希望對各位小伙伴們有所幫助。1、如果是鑰匙扣卡 卡上可有一串10位的數字,如果是卡片樣式的 ,一般有兩串數字 前面10位 后面8位 這種就是ID卡。2、兩面都空白 就是IC卡,還有一種方法 拿到強光下面照射,里面線圈如果是圓的 就是ID...