python:nonlocal的用法,global与nonlocal的区别

系统 1562 0

在python中内嵌函数可以引用外层函数作用域中的变量,并且可以通过某种操作来对其进行修改。
这里我们就可以使用到nonlocal语句来进行声名。我之前写过一篇global用法的文章,nonlocal的用法与global的用法很像,本篇博客的后面就会讲一下nonlocal和global的区别。

nonlocal语句的用法

语法:
允许内嵌函数修改定义在语法上位于外层的函数的作用域中的一个或者多个名称

用法:
nonlocal[变量名]

注意:
此语句仅适用于python3,在python2中内嵌函数可以使用外层作用域中通过赋值的所有名称,但不能进行修改;python3则可以使用并且可以进行修改。

语法实现:

            
              
                def
              
              
                dome_fun
              
              
                (
              
              
                )
              
              
                :
              
              
    num 
              
                =
              
              
                0
              
              
                def
              
              
                dome_fun_1
              
              
                (
              
              
                )
              
              
                :
              
              
                nonlocal
              
               num
        num 
              
                +=
              
              
                1
              
              
                return
              
               num
    
              
                return
              
               num

            
          

在这段dome里面,变量num既不是全局变量,也不是局部变量,而是外部内嵌函数的变量。

nonlocal与global的区别

在谈到nonlocal与global的区别之前,我们应该了解python中引用变量的顺序是什么样的。

python变量引用顺序:从当前作用域开始寻找变量,如果没找到就往上一层作用域寻找,没找到就再上一层。

具体步骤:当前作用域局部变量->外层作用域变量->再外层作用域变量->…->当前模块全局变量->pyhton内置变量

1、作用对象不同:

nonlocal作用于外部内嵌函数的变量;

global作用于全局变量。

2、global可以改变全局变量,同时可以定义新的全局变量;nonlocal只能改变外层函数变量,不能定义新的外层函数变量,并且nonlocal也不能改变全局变量。

3、声名:

global声名此变量为全局变量;nonlocal声名此变量与外层同名变量为相同的变量。

4、使用的范围不同:

global关键字可以用在任何地方,包括最上层函数中和嵌套函数中;

nonlocal关键字只能用于嵌套函数中,并且外层函数中必须定义了相应的局部变量,否则会发生错误


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论