手机
当前位置:查字典教程网 >脚本专栏 >python >python中global与nonlocal比较
python中global与nonlocal比较
摘要:python引用变量的顺序:当前作用域局部变量->外层作用域变量->当前模块中的全局变量->python内置变量一、globalglobal...

python引用变量的顺序: 当前作用域局部变量->外层作用域变量->当前模块中的全局变量->python内置变量

一、global

global关键字用来在函数或其他局部作用域中使用全局变量。但是如果不修改全局变量也可以不使用global关键字。

复制代码 代码如下:

gcount = 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 = counter_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比较】相关文章:

python为tornado添加recaptcha验证码功能

python 中文字符串的处理实现代码

python网络编程示例(客户端与服务端)

python采集博客中上传的QQ截图文件

Python实例之wxpython中Frame使用方法

python实现哈希表

Python ZipFile模块详解

python中使用urllib2伪造HTTP报头的2个方法

python 将字符串转换成字典dict

python解析文件示例

精品推荐
分类导航