Python3 nonlocal

加nonlocal:

count = 10

def non_local_test():

    count = 100
    def inner():
        nonlocal count
        count = 1000
        print('inner count is {}'.format(count))
    inner()
    print('outside count is {}'.format(count))


non_local_test()
print('global count is {}'.format(count))

结果:
在这里插入图片描述

不加nonlocal:


count = 10

def non_local_test():

    count = 100
    def inner():
        count = 1000
        print('inner count is {}'.format(count))
    inner()
    print('outside count is {}'.format(count))


non_local_test()
print('global count is {}'.format(count))



结果:
在这里插入图片描述

细心的小伙伴就会发现中间有个值不一样,nonlocal声明的变量不是局部变量,也不是全局变量,而是外部嵌套函数内的变量。当一个函数在本地作用域找不到变量申明时会向外层函数寻找,这在函数闭包中很常见,但是在不加nonlocal的情况下是不能就行修改的:
在这里插入图片描述
另外这个nonlocal应该是python3中才加入的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值