python引用變數的順序: 當前作用域區域性變數->外層作用域變數->當前模組中的全域性變數->python內建變數
一、global
global關鍵字用來在函式或其他區域性作用域中使用全域性變數。但是如果不修改全域性變數也可以不使用global關鍵字。
複製** **如下:
gwww.cppcns.comcount = 0
def global_test():
print (gcount)
def global_counter():
global gcount
gcount +=1
return gcount
def global_counter_test():
print(global_counter())
print(global_counter(程式設計客棧))
print(global_counter())
二、nonlocal
nonlocal關鍵字用來在函式或其他作用域中使用外層(非全域性)變數。
複製** **如下:
def make_counter():
count = 0
def counter():
nonlocal count
count += 1
return count
return counter
def make程式設計客棧_counter_test():
mc = make_counter()
print(mc())
print(mc())
print(mc())
也可以使用generator來實現類似的counter。如下:
複製** **如下:
def counter_generator():
count = 0
while true:
count += 1
yield count
def counter_generator_test():
# below is for python 3.x and works well
citer = www.cppcns.comcounter_generator().__iter__()
i = 0
while(i < 3) :
print(citer.__next__())
i+=1
def counter_generator_test2():
#below code don't work
#because next() function still suspends and cannot exit
#it seems the iterator is generated every time.
j = 0
for iter in counter_generator():
while(j < 3) :
print(iter)
j+=1
本文標題: python中global與nonlocal比較
本文位址: /jiaoben/python/116315.html
Python中global與nonlocal 宣告
如下 a 10 def foo a 100 執行foo 結果 a 還是10 函式中對變數的賦值,變數始終繫結到該函式的區域性命名空間,使用global 語句可以改變這種行為。a 10 def foo global a a 100 a 10 foo a 100 解析名稱時首先檢查區域性作用域,然後由內...
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函...