如下**
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函...