首頁 > 後端開發 > Python教學 > Python中變數的作用域如何使用

Python中變數的作用域如何使用

王林
發布: 2023-05-12 15:01:06
轉載
1437 人瀏覽過

前言

變數的作用域是指程式碼能夠存取該變數的區域,如果超出該區域,再造訪時就會出現錯誤。在程式中,一般會根據變數的 “有效範圍” 將變數分為 “全域變數” 和 “局部變數”。

一、局部變數

局部變數是指在函數內部定義並使用的變數,它只在函數內部有效。即函數內部的名字只在函數運行時才會創建,在函數運行之前或者運行完畢之後,所有的名字就都不存在了。所以,如果在函數外部使用函數內部定義的變量,就會出現拋出 NameError 例外。

例如,定義一個名稱為function 的函數,在該函數內部定義一個變數poem(稱為局部變數),並為其賦值,然後輸出該變數,最後在函數體外部再次輸出poem 變量,程式碼如下:

def function():
    poem = '面朝大海,春暖花开'
    print('局部变量poem = ', poem)  # 输出局部变量的值
function()  # 调用函数
print('局部变量poem = ', poem)  # 在函数体外输出局部变量的值
登入後複製

執行上面的程式碼將顯示如下圖所示的異常。

Python中變數的作用域如何使用

二、全域變數

與局部變數對應,全域變數為能夠作用於函數內外的變數。全域變數主要有以下兩種情況:

(1) 如果一個變量,在函數外定義,那麼不僅在函數外可以存取到,在函數內也可以存取。在函數體以外定義的變數是全域變數。

例如,定義一個全域變數poem,然後再定義一個函數,在該函數內輸出全域變數poem 的值,程式碼如下:

poem = '花有重开日,人无再少年'  # 全局变量
def function():
    print('函数体内:全局变量poem =', poem)  # 在函数体内输出全局变量的值
function()  # 调用函数
print('函数体外:全局变量poem =', poem)  # 在函数体外输出全局变量的值
登入後複製

執行上面的程式碼,將顯示以下內容:

函數體內:全域變數poem = 花有重開日,人無再少年
函數體外:全域變數poem = 花有重開日,人無再少年

說明當局部變數與全域變數重名時,將函數體的變數賦值後,不影響函數體外的變數。也就是各敲各的鑼,各打各的鼓。

例如,在函數體外定義一個全域變數a,並賦值為100,在函數體內定義一個局部變數a,並賦值為10,程式碼如下所示:

a = 100  # 定义一个全局变量
def function():
    a = 10  # 定义局部变量
    print(a)  # 输出局部变量的值
function()  # 调用函数
print(a)  # 输出全局变量的值
登入後複製

執行結果如下所示:

10100

(2) 在函數體內定義,並且使用global 關鍵字修飾後,該變數也變成全域變量。在函數體外也可以存取到該變量,並且在函數體內也可以對其進行修改。

例如,在函數體內定義一個變量,使用 global 關鍵字修飾。程式碼如下:

poem = '天若有情天亦老,人间正道是沧桑'  # 全局变量
print('函数体外:poem =', poem)  # 在函数体外输出全局变量的值
def function():
    global poem  # 将poem声明为全局变量
    poem = '人生得意须尽欢,莫使金樽空对月'  # 全局变量
    print('函数体内:poem =', poem)  # 在函数体内输出全局变量的值
function()  # 调用函数
print('函数体外:poem =', poem)  # 在函数体外输出全局变量的值
登入後複製

執行上面的程式碼,將顯示以下內容:

函數體外:poem = 天若有情天亦老,人間正道是滄桑
函數體內:poem = 人生得意須盡歡,莫使金樽空對月
函數體外:poem = 人生得意須盡歡,莫使金樽空對月

從上面在的結果中可以看出,透過global 關鍵字修飾的全域變量,是可以在函數體內部修改全域變數的值。

說明儘管Python允許全域變數和局部變數重名,但實際開發時,不建議這麼做,因為這樣容易讓程式碼混亂,很難分辨哪些是全域變量,哪些是局部變數。

以上是Python中變數的作用域如何使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板