python中nonlocal 的作用域

2022-09-05 10:45:09 字數 1052 閱讀 6987

'''

nonlocal關鍵字用來在函式或其他作用域中使用外層(非全域性)變數。

'''def work():

x = 0

def new_work():

nonlocal x

x=x+3

return x

return new_work

f=work()

print(f())

print(f())

print(f())

列印結果

'''

使用global 實現

'''a =0

def new_work():

global a

a=a+3

return a

print(new_work())

print(new_work())

print(new_work())

列印結果

'''

閉包= 函式+環境變數

'''def dosometing():

a =25

def add(x):

d=a+x

return d

return add

a = 10

f=dosometing()

print(f(5))

print(f(5))

print(f(5))

列印結果

'''

閉包= 函式+環境變數

nonlocal關鍵字用來在函式或其他作用域中使用外層(非全域性)變數。

'''def dosometing():

a =25

def add(x):

nonlocal a

a=a+x

return a

return add

a = 10

f=dosometing()

print(f(5))

print(f(5))

print(f(5))

列印結果

Python3 中的nonlocal用法

我先說一下官網的nonlocal的用法 官網的解釋雖然很好,但是不好理解,我們直接使用 進行理解 count 1defa count a函式裡面 如果不事先宣告,那麼函式b中的nonlocal就會報錯 defb nonlocal count print count count 2 b print c...

python 非區域性變數nonlocal

非區域性語句可以讓所列的識別符號 identifier 指向 最近的巢狀作用域 enclosing scope 中已經繫結過的變數,全域性變數除外。具體參考這篇文章 def a i 0 def b i i 1 b a b 中並不會賦值,a 和b 中i重名,報錯local variable i ref...

函式中的global和nonlocal

區域性作用域對全域性作用域的變數 此變數只能是不可變的資料型別 只能進行引用,而不能進行改變,只要改變就會報錯,但是有些時候,我們程式中會遇到區域性作用域去改變全域性作用域的一些變數的需求,這怎麼做呢?這就得用到關鍵字global global第乙個功能 在區域性作用域中可以更改全域性作用域的變數。...