python中global與nonlocal比較

2022-10-04 23:42:13 字數 1570 閱讀 4358

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函...