Python 深度剖析變數的作用域

2021-10-04 19:39:05 字數 1473 閱讀 1271

變數的作用域

乙個程式的所有的變數並不是在哪個位置都可以訪問的。

訪問的許可權決定於這個變數是在**賦值的。

變數的作用域決定了在哪個部分你可以訪問哪個特定的變數名稱

定義在函式內的變數擁有乙個區域性作用域,定義在函式外的擁有全域性作用域

全域性變數:在模組內,在所有函式外面,在class外面

區域性變數:函式內,在class方法內

可變型別的區域性變數

對於不可變型別的全域性變數來說,要在函式中需要修改global宣告

對於可變型別的全域性變數來說,要在函式中修改可以不使用global宣告

區域性變數和全域性變數的使用

total =

0# 定義了乙個全域性變數

defsum

(a,b)

:# 定義了乙個sum函式

total = a+b # total在這裡就是乙個區域性變數

print

(total)

# 列印結果為0

return total

sum(10,

20)# 呼叫sum函式

print

(total)

# 此時total就是乙個全域性變數,返回的應當就是之前定義的0

區域性變數,就是在函式內部定義的變數,全域性變數是宣告在函式外部的變數,定義在函式外的擁有全域性作用域不同的函式,可以定義相同的名字的區域性變數,但是各用個的不會產生影響

修改不可變型別的全域性變數

當內部作用域想要修改外部作用域的變數的時候,就可以用global關鍵字了

total =

0# 定義了乙個全域性變數

defsum

(a,b)

:# 定義了乙個sum函式

global total # 需要使用global關鍵字

total = a+b # total在這裡就是乙個區域性變數

print

(total)

# 列印結果為30

return total

sum(10,

20)# 呼叫sum函式

print

(total)

# 此時total就是乙個全域性變數,返回的應當就是之前定義的0

修改可變型別的全域性變數

list=[

6,7]

defsum

(a,b)

:list

[a,2

,b,4,5

])return

list

sum(10,

20)print

(list

)#[6, 7, [10, 2, 20, 4, 5]]

深度剖析 變數 變數的作用域

作用域的定義 作用域 scope 或者可見性是指變數在程式內的可見和可引用的範圍。比如,全域性變數在所有的檔案都可訪問,那他的作用域就是所有檔案 static 定義的全域性變數,只可以在定義它的原始檔中訪問,那他的作用域就是其所在的原始檔 函式內部的區域性變數,只在其函式範圍內有效 有些變數,只在某...

深度剖析Python 指令碼問題 轉貼

上述過程的關鍵點就在於c 和指令碼如何相互呼叫函式,以及如何傳遞引數與結果。一般的解決方法是在程式啟動時利用指令碼的api向指令碼註冊c 的擴充套件函式。將函式指標傳遞給指令碼系統以便將來呼叫,呼叫指令碼函式則使用指令碼系統的api將呼叫引數壓進棧,取得執行結果也要通過api進行。python 指令...

Python變數的作用域

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