关键字作用域Python中nonlocal关键字

今天笔者几篇文章绍介了改关键字作用域的文章. 关联文章的地址

    在这篇文章中绍介了“Python的闭包与nonlocal”的用法,因为nonlocal是在Python3.0中新增的关键字,python2.x不供提持支,文中提出在Python2.x处理嵌套函数引用外部变量的法方只有应用global 关键字定义全局变量,另一种可行的处理方案是应用列表或字典取代要操纵的关键字。

    示例如下:

    1.python3.0 应用nonlocal关键字

    

    >>> def outer():        x = 1        def inner():            nonlocal x            x = 2            print("inner:", x)        inner()        print("outer:", x) >>> outer() inner: 2 outer: 2

    

    2.python2.x  借助list或dict现实

    

    >>> def outer():        x = [1]        def inner():            x[0] += 1 #修改x[0]保存的值            print("inner:", x[0])        inner()        print("outer:", x[0]) >>> outer() inner: 2 outer: 2

    

 

    更多参考资料:

    1. http://stackoverflow.com/questions/1261875/python-nonlocal-statement

    2.javascript中作用域链定义与python作用域的异同

    3.官方档文:

    每日一道理
共和国迎来了她五十诞辰。五十年像一条长河,有急流也有缓流;五十年像一幅长卷,有冷色也有暖色;五十年像一首乐曲,有低音也有高音;五十年像一部史诗,有痛苦也有欢乐。长河永远奔流,画卷刚刚展开,乐曲渐趋高潮,史诗还在续写。我们的共和国正迈着坚定的步伐,跨入新时代。

    “The nonlocal statement causes the listed identifiers to refer to previously bound variables in the nearest enclosing scope. This is important because the default behavior for binding is to search the local namespace first. The statement allows encapsulated code to rebind variables outside of the local scope besides the global (module) scope.

    Names listed in a nonlocal statement, unlike to those listed in a global statement, must refer to pre-existing bindings in an enclosing scope (the scope in which a new binding should be created cannot be determined unambiguously).

    Names listed in a nonlocal statement must not collide with pre-existing bindings in the local scope.“

文章结束给大家分享下程序员的一些笑话语录: 马云喜欢把自己包装成教主,张朝阳喜欢把自己包装成明星,李彦宏喜欢把自己包装成的很知性,丁磊喜欢把自己包装的有创意,李开复总摆出一副叫兽的样子。看来的。其实我想说,缺啥补啥,人之常情。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值