Python中變量的作用域的具體使用
前言
變量的作用域是指程序代碼能夠訪問該變量的區(qū)域,如果超出該區(qū)域,再訪問時就會出現(xiàn)錯誤。在程序中,一般會根據(jù)變量的 “有效范圍” 將變量分為 “全局變量” 和 “局部變量”。
一、局部變量
局部變量是指在函數(shù)內(nèi)部定義并使用的變量,它只在函數(shù)內(nèi)部有效。即函數(shù)內(nèi)部的名字只在函數(shù)運行時才會創(chuàng)建,在函數(shù)運行之前或者運行完畢之后,所有的名字就都不存在了。所以,如果在函數(shù)外部使用函數(shù)內(nèi)部定義的變量,就會出現(xiàn)拋出 NameError 異常。
例如,定義一個名稱為 function 的函數(shù),在該函數(shù)內(nèi)部定義一個變量 poem(稱為局部變量),并為其賦值,然后輸出該變量,最后在函數(shù)體外部再次輸出 poem 變量,代碼如下:
def function():
poem = '面朝大海,春暖花開'
print('局部變量poem = ', poem) # 輸出局部變量的值
function() # 調(diào)用函數(shù)
print('局部變量poem = ', poem) # 在函數(shù)體外輸出局部變量的值
運行上面的代碼將顯示如下圖所示的異常。

二、全局變量
與局部變量對應(yīng),全局變量為能夠作用于函數(shù)內(nèi)外的變量。全局變量主要有以下兩種情況:
(1) 如果一個變量,在函數(shù)外定義,那么不僅在函數(shù)外可以訪問到,在函數(shù)內(nèi)也可以訪問到。在函數(shù)體以外定義的變量是全局變量。
例如,定義一個全局變量 poem,然后再定義一個函數(shù),在該函數(shù)內(nèi)輸出全局變量 poem 的值,代碼如下:
poem = '花有重開日,人無再少年' # 全局變量
def function():
print('函數(shù)體內(nèi):全局變量poem =', poem) # 在函數(shù)體內(nèi)輸出全局變量的值
function() # 調(diào)用函數(shù)
print('函數(shù)體外:全局變量poem =', poem) # 在函數(shù)體外輸出全局變量的值
運行上面的代碼,將顯示以下內(nèi)容:
函數(shù)體內(nèi):全局變量poem = 花有重開日,人無再少年
函數(shù)體外:全局變量poem = 花有重開日,人無再少年
說明:當(dāng)局部變量與全局變量重名時,對函數(shù)體的變量進行賦值后,不影響函數(shù)體外的變量。也就是各敲各的鑼,各打各的鼓。
例如,在函數(shù)體外定義一個全局變量 a,并賦值為 100,在函數(shù)體內(nèi)定義一個局部變量 a,并賦值為 10,代碼如下所示:
a = 100 # 定義一個全局變量
def function():
a = 10 # 定義局部變量
print(a) # 輸出局部變量的值
function() # 調(diào)用函數(shù)
print(a) # 輸出全局變量的值
執(zhí)行結(jié)果如下所示:
10100
(2) 在函數(shù)體內(nèi)定義,并且使用 global 關(guān)鍵字修飾后,該變量也就變?yōu)槿肿兞?。在函?shù)體外也可以訪問到該變量,并且在函數(shù)體內(nèi)還可以對其進行修改。
例如,在函數(shù)體內(nèi)定義一個變量,使用 global 關(guān)鍵字修飾。代碼如下所示:
poem = '天若有情天亦老,人間正道是滄桑' # 全局變量
print('函數(shù)體外:poem =', poem) # 在函數(shù)體外輸出全局變量的值
def function():
global poem # 將poem聲明為全局變量
poem = '人生得意須盡歡,莫使金樽空對月' # 全局變量
print('函數(shù)體內(nèi):poem =', poem) # 在函數(shù)體內(nèi)輸出全局變量的值
function() # 調(diào)用函數(shù)
print('函數(shù)體外:poem =', poem) # 在函數(shù)體外輸出全局變量的值
運行上面的代碼,將顯示以下內(nèi)容:
函數(shù)體外:poem = 天若有情天亦老,人間正道是滄桑
函數(shù)體內(nèi):poem = 人生得意須盡歡,莫使金樽空對月
函數(shù)體外:poem = 人生得意須盡歡,莫使金樽空對月
從上面的結(jié)果中可以看出,通過 global 關(guān)鍵字修飾的全局變量,是可以在函數(shù)體內(nèi)部修改全局變量的值。
說明:盡管Python允許全局變量和局部變量重名,但是在實際開發(fā)時,不建議這么做,因為這樣容易讓代碼混亂,很難分清哪些是全局變量,哪些是局部變量。
到此這篇關(guān)于Python中變量的作用域的具體使用的文章就介紹到這了,更多相關(guān)Python 變量的作用域內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python matplotlib 在指定的兩個點之間連線方法
今天小編就為大家分享一篇python matplotlib 在指定的兩個點之間連線方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05
Python中plt.imshow(image)無法顯示圖片的解決
這篇文章主要介紹了Python中plt.imshow(image)無法顯示圖片的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11
python3 map函數(shù)和filter函數(shù)詳解
這篇文章主要介紹了python3 map函數(shù)和filter函數(shù)詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-08-08
Python編程tkinter庫Canvas實現(xiàn)涂鴉顏色表及圍棋盤示例
這篇文章主要為大家介紹了Python編程中如何使用tkinter庫Canvas來實現(xiàn)涂鴉,顏色表及圍棋盤的示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-10-10
關(guān)于不懂Chromedriver如何配置環(huán)境變量問題解決方法
這篇文章主要介紹了關(guān)于不懂Chromedriver如何配置環(huán)境變量問題解決方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-06-06
在python2.7中用numpy.reshape 對圖像進行切割的方法
今天小編就為大家分享一篇在python2.7中用numpy.reshape 對圖像進行切割的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12

