`
zh19881105
  • 浏览: 16691 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

关键字作用域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.“

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

分享到:
评论

相关推荐

    Python中关键字global和nonlocal的区别详解

    两个关键词都用于允许在一个局部作用域中使用外层的变量。 global 表示将变量声明为全局变量 nonlocal 表示将变量声明为外层变量(外层函数的局部变量,而且不能是全局变量) 注意:我使用的是Python3.6.3,可能和...

    Python语言基础:作用域.pptx

    比如两个嵌套函数,一个函数(或类) A 里面又包含了一个函数 B ,那么对于 B 中的名称来说 A 中的作用域就为 nonlocal。G(Global):当前脚本的最外层。B(Built-in): 包含了内建的变量/关键字等。02作用域的...

    python global和nonlocal用法解析

    ◆global和nonlocal是Python的两个重要变量作用域关键字 1.global用在全局变量,应用场景: 变量定义在函数外部的时候,如果函数里面想改变这个全局变量的值,需要在当前的引用函数里面重新定义一个变量 并用关键字...

    Python中关键字nonlocal和global的声明与解析

    一、Python中global与nonlocal 声明 如下代码 a = 10 def foo(): a = 100 执行foo() 结果 a 还是10 函数中对变量的赋值,变量始终绑定到该函数的局部命名空间,使用global 语句可以改变这种行为。 >>> a 10 ...

    Python语言基础:global 和 nonlocal关键字.pptx

    当内部作用域想修改外部作用域的变量时,就需要用到global关键字。 实例:修改全局变量 num,并输出结果。 num = 1 def fun1(): global num # 需要使用 global 关键字声明 print(num) num = 123 print(num) ...

    Python中 Global和Nonlocal的用法详解

    global关键字用来在函数或其他局部作用域中使用全局变量, nonlocal声明的变量不是局部变量,也不是全局变量,而是外部嵌套函数内的变量。这篇文章主要介绍了Python中 Global和Nonlocal的用法,需要的朋友可以参考下

    python中global与nonlocal比较

    python引用变量的顺序: 当前作用域局部变量->外层作用域变量->当前模块中的全局变量->python内置变量 一、global global关键字用来在函数或其他局部作用域中使用全局变量。但是如果不修改全局变量也可以不使用...

    Python程序基础:函数综合案例.pptx

    当内部作用域想要使用外部作用域的变量时,可使用global和nonlocal关键字。;;2.nonlocal关键字;关键字lambda用于定义一种特殊的函数——匿名函数,又称lambda函数。匿名函数并非没有名字,而是将函数名作为函数结果...

    python3基础篇(九)——命名空间和作用域

    目录python3基础篇(九)——命名空间和作用域1 命名空间1.1 命名空间分类1.2 命名空间的查找顺序2 作用域2.1 作用域分类2.2 作用域的查找顺序2.3 global和nonlocal关键字2.3.1 global2.3.1.1 global声明全局变量2.3...

    python基础(十二):名称空间与作用域

    文章目录一、名称空间1、内置名称空间2、全局名称空间3、局部名称空间二、作用域1、作用域与名字查找的优先级2、LEGB(四种名称空间)3、global关键字4、nonlocal关键字 一、名称空间 首先我们应该知道,栈一般存...

    Python动态参数/命名空间/函数嵌套/global和nonlocal

     1.2 **kwargs 关键字参数动态传参 def func(**kwargs): print(kwargs) func(a=1, b=2, c=3) func(a=1, b=2) 结果: {'a': 1, 'b': 2, 'c': 3} {'a': 1, 'b': 2}  顺序:位置参数, *args, 默认值

    第十二天学Python:函数(3)变量作用域、匿名函数与递归函数

    变量作用域全局变量与局部变量global:关键字nonlocal:关键字匿名函数 lambda递归函数递归函数的原理填个以前的小坑:逻辑短路 变量作用域 全局变量与局部变量 全局变量:全局变量在整个程序文件(.py)中声明,...

Global site tag (gtag.js) - Google Analytics