python全局變量與局部變量的區(qū)別及使用
在python中定義和使用函數(shù)方法的時候,會遇到局部變量和全局變量,這里主要是說明什么是局部變量,什么是全局變量,以及兩者之間的區(qū)別。
首先兩者最大的區(qū)別就是作用域不同,也可以說是命名空間不同,簡單來說就是全局變量和局部變量他兩的作用范圍不一樣。
全局變量和局部變量的定義:全局變量是在函數(shù)外定義的變量,局部變量是在函數(shù)方法內(nèi)定義的變量
例如
a=1 def func(): b=2
這里的a就是全局變量,b就是局部變量。
知道這兩者的定義之后,就要去理解他兩的作用域不同。
可以將這里的作用域不同主要是分為:
1、函數(shù)內(nèi)可以直接訪問全局變量的
例如
a=1 def func(): b=2 print(a) func() print(a)
添加圖片注釋,不超過 140 字(可選)
這里的輸出是兩個a的值1,這說明函數(shù)內(nèi)是可以直接訪問全局變量的
2、函數(shù)內(nèi)不可以直接修改全局變量
a=1 def func(): b=2 a=a+1 print(a)
添加圖片注釋,不超過 140 字(可選)
這里就會出現(xiàn)報錯,這個報錯就是表明函數(shù)方法內(nèi)可以讀取但是不可以去修改全局變量。
UnboundLocalError: local variable 'a' referenced before assignment
3、函數(shù)外部不可以直接訪問局部變量
a=1 def func(): b=2 print(a) func() print(a) Print(b)
報錯NameError: name 'b' is not defined
這就是作用域做了一個限制。但對于以上兩個問題,我們可以通過global來解決,分別把a和b使用global來聲明一下即可,global a,b,就不會出現(xiàn)報錯的情況了。
a=1 def func(): global a,b b=2 a+=1 print(a) print(b)
這里輸出的a的值是2,這也就表明了修改全局變量
4、同名的局部變量會覆蓋全局變量
a=1 def func(): a=10 print(a) func() print(a)
這里的輸出是10,1,這個時候就是局部變量,它雖然名字和全局變量是一樣的,但是它有一個查找優(yōu)先級,先在自己的作用域中去找,如果找到了就直接打印出來了,如果找不到的話才會去全局變量中去找,所以說只要有同名的局部變量,就會覆蓋全局變量。
到此這篇關于python全局變量與局部變量的區(qū)別及使用的文章就介紹到這了,更多相關python全局變量與局部變量內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python3編碼問題 Unicode utf-8 bytes互轉(zhuǎn)方法
今天小編就為大家分享一篇Python3編碼問題 Unicode utf-8 bytes互轉(zhuǎn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10python之tensorflow手把手實例講解貓狗識別實現(xiàn)
要說到深度學習圖像分類的經(jīng)典案例之一,那就是貓狗大戰(zhàn)了。貓和狗在外觀上的差別還是挺明顯的,無論是體型、四肢、臉龐和毛發(fā)等等, 都是能通過肉眼很容易區(qū)分的。那么如何讓機器來識別貓和狗呢?網(wǎng)上已經(jīng)有不少人寫過這案例了,我也來嘗試下練練手。2021-09-09