python global和nonlocal的使用

2022-02-22 02:23:18 字數 976 閱讀 8862

變數定義在函式外部的時候,如果函式裡面想改變這個全域性變數的值,需要在當前的引用函式裡面重新定義乙個變數 並用關鍵字global修飾。

例如:

a=1

def b():

a+=1

print(a)

b()

用ide寫完這段**的時候,還沒執行就會報紅線提示錯誤,執行之後產生錯誤,錯誤內容為:unboundlocalerror: local variable 'a' referenced before assignment。

解決方案:函式中重新宣告變數並加修飾符global修改:

#!/usr/bin/env python  

# encoding: utf-8

a=1def b():

global a

a+=1

print(a)

b()

在函式的函式裡面使用函式的變數。表達的可能有點混亂,看**就知道了

#!/usr/bin/env python  

# encoding: utf-8

def b():

num2=1

def c():

nonlocal num2#為了修改非全域性變數

num2+=2

print(num2)

return c

b()()

#!/usr/bin/env python  

# encoding: utf-8

gcount = 0

def global_test():

global gcount

s=0def g():

nonlocal s

s+=2

print(s)

return g

gcount+=1

print (gcount)

global_test()()

Python Global和Nonlocal的用法

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

python global全域性變數

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

python global的詳細使用

有一點基礎的應該都知道,這個global關鍵字,用於宣告後面的變數是全域性變數。下面分幾種情況進行說明 a 1defhi print f a hi a 1 a 1defhi print a a 2print f 函式內部的a hi print f 函式外部的a out 報錯 unboundlocal...