python global用法及注意點

2021-10-06 05:54:20 字數 1369 閱讀 7393

global 的主要用法,若想在函式內部使用函式外部的全域性變數,則需要使用關鍵字global,示例:

a = 20

def testglobal():

a = 10

print("在函式內給a 重新賦值後列印:",a)

if __name__ =="__main__":

testglobal()

print("列印全域性變數a:", a)

執行結果:

在函式內給a 重新賦值後列印: 10

列印全域性變數a: 20

執行結果如圖所示,函式內部直接給 a 賦值,並沒有修改全域性變數的值,而是在定義乙個同名的區域性變數。若想在函式內部修改全域性變數,需要在函式裡面宣告全域性變數,global:

a = 20

def testglobal():

global a

a = 10

print("在函式內給a 重新賦值後列印:",a)

if __name__ =="__main__":

testglobal()

print("列印全域性變數a:", a)

執行結果:

在函式內給a 重新賦值後列印: 10

列印全域性變數a: 10

需要注意的是,有些全域性變數型別不需要在函式內部申明 global,例如:列表、字典、集合,這些都是可變型別,不可變型別則需要宣告,如: int、float、bool、str、元組

# 定義乙個集合

parameset =

def testglabal():

print("修改集合之前的id:",id(parameset))

parameset.add("value04")

print(parameset)

print("修改集合之後的id:",id(parameset))

if __name__ =="__main__":

testglabal()

修改集合之前的id: 2068161947240

修改集合之後的id: 2068161947240

不可變型別,以int 為例:

# 定義乙個整數

a = 10

print("修改a之前的id:",id(a))

a = 20

print("修改a之後的id:",id(a))

修改a之前的id: 1671654704

修改a之後的id: 1671655024

Python Global和Nonlocal的用法

nonlocal和global也很容易混淆。簡單記錄下自己的理解。總之一句話,作用域是全域性的,就是會修改這個變數對應位址的值。global語句是乙個宣告,它適用於整個當前 塊。這意味著列出的識別符號將被解釋為全域性變數。儘管自由變數可能指的是全域性變數而不被宣告為全域性變數。global語句中列出...

python global和nonlocal的使用

變數定義在函式外部的時候,如果函式裡面想改變這個全域性變數的值,需要在當前的引用函式裡面重新定義乙個變數 並用關鍵字global修飾。例如 a 1 def b a 1 print a b 用ide寫完這段 的時候,還沒執行就會報紅線提示錯誤,執行之後產生錯誤,錯誤內容為 unboundlocaler...

python global全域性變數

在函式的內部如果想使用函式外的變數,並且希望改變該變數的值,可以考慮使用global關鍵字,從而告訴直譯器該變數在函式體外部定義,當前函式可以對其進行改變。下面請看加global語句和不加global語句使用變數的差別。usr bin python deffunc x print x is x x ...