python global的詳細使用

2021-10-05 13:14:12 字數 2117 閱讀 1760

有一點基礎的應該都知道,這個global關鍵字,用於宣告後面的變數是全域性變數。

下面分幾種情況進行說明:

a=

1defhi(

):print

(f'a:'

)hi(

)'''

a:1'''

a=

1defhi(

):print

(a) a=

2print

(f'函式內部的a:'

)hi(

)print

(f'函式外部的a:'

)'''

out:報錯

unboundlocalerror: local variable 'a' referenced before assignment

這說明,函式不會再去找外部的a。

'''

並不會影響全域性變數的值。

a=

1defhi(

):a=

2print

(f'函式內部的a:'

)hi(

)print

(f'函式外部的a:'

)'''

out:

函式內部的a:2

函式外部的a:1

'''

全域性變數跟隨變化

a=[1

]defhi(

):a[0]

=2print

(f'函式內部的a:'

)hi(

)print

(f'函式外部的a:'

)'''

out:

函式內部的a:[2]

函式外部的a:[2]

'''

沒有什麼用,因為外部本來就是全域性,無需申明

global aa=1

defhi()

: a=

2print

(f'函式內部的a:'

)hi(

)print

(f'函式外部的a:'

)'''

out:

函式內部的a:2

函式外部的a:1

'''

申明此作用域中的變數是全域性作用域中的那個變數,可以改變全域性變數的值。

a=

1defhi(

):global a

print

(f'修改之前的a:'

) a=

2print

(f'函式內部的a:'

)hi(

)print

(f'函式外部的a:'

)'''

out:

修改之前的a:1

函式內部的a:2

函式外部的a:2

'''

a=

1defhi(

):global a

a=2print

(f'函式內部的a:'

)def

hello()

: a=

3print

(f'第二層函式中的a:'

) hello(

)hi(

)print

(f'函式外部的a:'

)'''

out:

函式內部的a:2

第二層函式中的a:3

函式外部的a:2

'''

道理一樣,第二層函式中也必須申明

a=

1defhi(

):global a

a=2print

(f'函式內部的a:'

)def

hello()

:global a

a=3print

(f'第二層函式中的a:'

) hello(

)hi(

)print

(f'函式外部的a:'

)'''

函式內部的a:2

第二層函式中的a:3

函式外部的a:3

'''

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 ...