python全域性變數與區域性變數

2022-06-06 21:03:10 字數 1557 閱讀 3334

全域性變數:指在函式之外定義的變數,一般沒有縮排,在程式執行的全過程有效

區域性變數:指在函式內部使用的變數,僅在函式內部有效,當函式退出時變數將不存在

例1:

n = 1  # 全域性變數

def func(a, b):

c = a * b # c是區域性變數,a和b作為函式引數也是區域性變數

這個例子說明,當函式執行完退出後,其內部變數將被釋放。

如果函式內部使用了全域性變數呢?例如:

n=1 #n是全域性變數

def func(a,b):

n=b #這個n是在函式記憶體中新生成的區域性變數,不是全域性變數

return a*b

s=func("knock~",2)

print(s,n) #測試一下n值是否發生改變knock~knock~ 1

函式func()內部使用了變數n,並且將變數引數b賦值給變數n,為何n值沒有改變?

因為函式func()有自己的記憶體空間,它將n=b語句理解為生成乙個區域性變數n,並將引數b賦值給它,此時func()函式沒有將n當作全域性變數。所以,函式退出後,區域性變數n被釋放,全域性變數n的值沒有改變。

如果希望讓func()函式將n當作全域性變數,需要在變數n使用前顯式說明該變數為全域性變數,修改後:

n = 1  # n是全域性變數

def func(a,b):

global n

n = b # 這個n是在函式記憶體中新生成的區域性變數,不是全域性變數

return a*b

s = func("knock~",2)

print(s, n) # 測試一下n值是否發生改變knock~knock~ 2

(1)簡單資料型別變數無論是否與全域性變數重名,僅在函式內部建立和使用,函式退出後變數被釋放,如有全域性同名變數,其值不變。

(2)簡單資料型別變數在用global保留字宣告後,作為全域性變數使用,函式退出後該變數保留且值被函式改變。

(3)對於組合資料型別的全域性變數,如果在函式內部沒有被真實建立的同名變數,則函式內部可以直接使用並修改全域性變數的值。

(4)如果函式內部真實建立了組合資料型別變數,無論是否有同名全域性變數,函式僅對區域性變數進行操作,函式退出後區域性變數被釋放,全域性變數值不變。

此處,some_function裡面的some_list不是新建立的

例子:關於區域性變數的作用域,如下**的正確輸出是什麼

答案:a

參考:python函式對變數的作用及遵循的原則

Python 區域性變數與全域性變數

問題由來 考慮到想在執行結束後的使用者空間裡面檢視一下資料,我把data1作為全域性變數來進行處理。data1 function a1 data1 readdata function a2 data1.dealdata if name main a1 a2 此時,a2 函式沒有任何輸出,即data1...

python 全域性變數與區域性變數

目錄 一 變數作用域 二 全域性變數 區域性變數 2.1 global 和nonlocal關鍵字 python中,變數不是在 都可以訪問的,訪問許可權決定於變數是在 被賦值的。變數作用域決定了哪一部分程式可以訪問哪些特定的變數。python的作用域一共分為四種 程式查詢變數的規則為 l e g b ...

python區域性變數與全域性變數

區域性變數 區域性變數是在函式內部進行使用,無法全域性共享 全域性變數 全域性變數在函式外部進行共享使用,可以接收函式的呼叫 區域性變數 def demo1 num 1print num defdemo2 print num print會報錯,原因顯示為沒有定義num這個變數,所以證明在demo1中...