Python的變數的作用域(全域性變數和區域性變數)

2021-10-06 14:37:27 字數 1115 閱讀 7005

變數

變數起作用的範圍稱為變數的作用域,不同的作用域內同名變數之間互不影響。變數分為:全域性變數、區域性變數。

全域性變數:

在函式和類定義之外宣告的變數,作用域為定義的模組,從定義位置開始直到模組結束。

全域性變數降低了函式的通用性和可讀性,應盡量避免全域性變數的使用。

全域性變數一般做常量使用。

函式內要改變全域性變數的值,使用global宣告一下

區域性變數:

在函式體中(包含形式引數)宣告的變數

區域性變數的引用比全域性變數快,優先考慮使用區域性變數

如果區域性變數和全域性變數同名,則在函式內隱藏全域性變數,只使用同名的區域性變數。

全域性變數的作用域測試:

a=2020      #全域性變數

def one():

global a #如果在函式內改變全域性變數的值,使用global關鍵字宣告

print(a) #列印全域性變數a的值

a=20200528 #修改全域性變數的值

one()

print(a)

#執行返回

>>>2020

20200528

***在呼叫函式時,函式底層的變化。函式內部的變數將在棧中形成棧幀(也稱為startframe),幀只包含函式體中區域性變數(不包含全域性變數),在呼叫函式後,幀消失,再次呼叫函式時,在形成棧幀幀。

輸出區域性變數和全域性變數

a=100

def one(a,b,c):

print(a,b,c)

print(locals()) #列印輸出區域性變數

print("---->"*20)

print(globals()) #列印輸出全域性變數

one(11,22,33)

結果返回

有關全域性和區域性變數效率的測試

Python作用域 全域性作用域 區域性作用域

在python中,每個函式都會建立乙個作用域。pythonistas也可能稱函式擁有它們自己的命名空間 namespace 這意味著當在函式體裡遇到變數名 時,python首先在該函式的命名空間中查詢,python包含了一些讓我們檢視命名空間的函式。讓我們寫乙個簡單的函式來探查一下local和glo...

Python變數的作用域

python程式有各種各樣的命名空間,它指的是在該程式段內乙個特定的名稱是獨一無二的,它和其它同名的命名空間是無關的。在python中每乙個函式都有自己的命名空間,如果在函式體外部,也就是主程式範圍內定義乙個變數a,然後在函式體內也定義乙個變數a,那麼兩者指帶的是不同的變數。但是要知道的是場景總是多...

python 變數的作用域

變數的作用域 1.區域性作用域 local 每次呼叫函式時都會建立乙個區域性作用域。區域性作用域 函式 中定義的變數稱之為區域性變數。區域性變數的作用域為 從定義變數處開始到函式結束。函式呼叫結束後,其對應的區域性作用域中的所有變數都會被銷毀。2.巢狀作用域 enclosing 每次呼叫巢狀函式中的...