Python中global與nonlocal 宣告

2021-06-25 17:27:48 字數 802 閱讀 5979

如下**

a = 10

def foo():

a = 100

執行foo() 結果 a 還是10

函式中對變數的賦值,變數始終繫結到該函式的區域性命名空間,使用global 語句可以改變這種行為。

>>> a

10>>> def foo():

... global a

... a = 100

...>>> a

10>>> foo()

>>> a

100

解析名稱時首先檢查區域性作用域,然後由內而外一層層檢查外部巢狀函式定義的作用域,如找不到搜尋全域性命令空間和內建命名空間。

儘管可以層層向外(上)查詢變數,但是! ..python2 只支援最裡層作用域(區域性變數)和全域性命令空間(gloabl),也就是說內部函式不能給定義在外部函式中的區域性變數重新賦值,比如下面**是不起作用的

def countdown(start):

n = start

def decrement():

n -= 1

python2 中,解決方法可以是是把修改值放到列表或字典中,python3 中,可以使用nonlocal 宣告完成修改

def countdown(start):

n = start

def decrement():

nonlocal n

n -= 1

python中global與nonlocal比較

python引用變數的順序 當前作用域區域性變數 外層作用域變數 當前模組中的全域性變數 python內建變數 一 global global關鍵字用來在函式或其他區域性作用域中使用全域性變數。但是如果不修改全域性變數也可以不使用global關鍵字。複製 如下 gwww.cppcns.comcoun...

php中global與 GLOBAL的用法及區別

php中global 與 globals 差別 原本覺得global和 globals除了寫法不一樣覺得,其他都一樣,可是在實際利用中發現2者的差別還是很大的 先看下面的例子 php 例子1 function test global function test globals var1 5 var2...

python 中global的用法

python中定義函式時,若想在函式內部對函式外的變數進行操作,就需要在函式內部宣告其為global。例子1x 1 def func x 2 func print x 輸出 1 此時沒有使用global關鍵字,無法對全域性變數num進行修改 在func函式中並未在x前面加global,所以func函...