python global和nonlocal_Python语言中global 和 nonlocal 的作用域

本文主要向大家介绍了Python语言中global 和 nonlocal 的作用域,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

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

global

一、在局部如果声明全局变量,可以对全局变量修改,否则不行

gcount = 0

def global_test():

....global gcount

....gcount+=1

....print (gcount)

global_test()

正确输出 1

————————————————————————————

gcount = 0

def global_test():

....gcount+=1

....print (gcount)

global_test()

UnboundLocalError: local variable 'gcount' referenced before assignment

如果函数内要对全局变量修改,需要使用关键字global

二、 在局部如果不声明全局变量,并且不修改全局变量。则可以正常使用全局变量:

gcount = 0

def global_test():

....print (gcount)

global_test()

如果在局部不修改全局变量,程序正确输出 0

三、nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量。

def make_counter():

....count = 0

....def counter():

........nonlocal count #使用外层的count变量

........count += 1

........return count

........return counter

def make_counter_test():

....mc = make_counter()

....print(mc())

....print(mc())

....print(mc())

make_counter_test()

输出:

1

2

3

本文由职坐标整理并发布,希望对同学们学习Python有所帮助,更多内容请关注职坐标编程语言Python频道!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值