Python3中nonlocal和global的用法及区别
- 更新时间:2020-07-16 08:08:28
- 编辑:龚曼蔓
参考资料
- 《“笨办法”学Python 3》相关视频 配套资源 / 206.67 KB / (美)泽德·A.肖(zed A.shaw 推荐度:
- 《用图形学Python 3》源码资源 配套资源 / 243 MB / 佘友军 推荐度:
- Python3.7从零开始学 PDF 电子书 / 75.8 MB / 刘宇宙/刘艳 推荐度:
- Python3爬虫、数据清洗与可视化实战 PDF 电子书 / 232.8 MB / 零一 推荐度:
- 《Python 3.0科学计算指南》代码实例资源 配套资源 / 2.68 MB / 克劳斯·福勒 推荐度:
正文内容
Python3中nonlocal和global的用法及区别介绍(附示例)
本篇文章给大家带来的内容是关于Python3中nonlocal和global的用法及区别介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
关键字nonlocal
在Python 2.x中,闭包只能读外部函数的变量,而不能改写它。为了解决这个问题,Python 3.x引入了nonlocal关键字,在闭包内用nonlocal声明变量,就可以让解释器在外层函数中查找变量名。
注意:关键字nonlocal:是python3.X中出现的,所以在python2.x中无法直接使用.
关键字global
Python里只有2种作用域:全局作用域和局部作用域。全局作用域是指当前代码所在模块的作用域,局部作用域是指当前函数或方法所在的作用域。局部作用域里的代码可以读外部作用域(包括全局作用域)里的变量,但不能更改它。如果想更改它,这里就要使用global关键字了
实例
关键字nonlocal的作用与关键字global类似,使用nonlocal关键字可以在一个嵌套的函数中修改嵌套作用域中的变量。
看两个例子
实例1
name = 'pythontab' def func() global name name = 'pythontab.com' func() print(name)
结果:
pythontab.com
实例2
def func(): name = 'pythontab' def foo(): nonlocal name name = 'pythontab.com' foo() print(name) func()
结果:
pythontab.com
注意看, 实例2中并没有使用global关键字而改变了name的值。
总结
主要区别有以下两点:
- 两者的功能不同。global关键字修饰变量后标识该变量是全局变量,对该变量进行修改就是修改全局变量,而nonlocal关键字修饰变量后标识该变量是上一级函数中的局部变量,如果上一级函数中不存在该局部变量,nonlocal位置会发生错误(最上层的函数使用nonlocal修饰变量必定会报错)。
- 两者使用的范围不同。global关键字可以用在任何地方,包括最上层函数中和嵌套函数中,即使之前未定义该变量,global修饰后也可以直接使用,而nonlocal关键字只能用于嵌套函数中,并且外层函数中定义了相应的局部变量,否则会发生错误(见1)
以上就是Python3中nonlocal和global的用法及区别介绍(附示例)的详细内容,更多请关注码农之家其它相关文章!
相关教程
-
实例解析Python3 如何利用requests 库进行post携带账号密码请求数据
今天小编就为大家分享一篇Python3 利用requests 库进行post携带账号密码请求数据的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
发布时间:2020-02-11
-
Python3结合Dlib实现人脸识别和剪切的实例详解
本篇文章给大家详细分析了Python3结合Dlib实现人脸识别和剪切这个技术,对此有兴趣的朋友参考学习下。
发布时间:2019-11-09
-
python3 pandas 如何读取MySQL数据和插入
下面为大家分享一篇python3 pandas 读取MySQL数据和插入的实例,具有很好的参考价值,希望对大家有所帮助。一起过来看看吧
发布时间:2020-02-19
-
python3 flask实现文件上传的代码
这篇文章主要为大家详细介绍了python3 flask实现文件上传功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
发布时间:2019-11-23
-
python3获取当前目录的代码步骤
这篇文章主要介绍了python3获取当前目录的实现方法,文中给大家提到了python3获取当前目录和上级目录的方法,需要的朋友可以参考下
发布时间:2020-02-19
-
python3实现字符串操作的代码分享
这篇文章主要介绍了python3实现字符串操作的实例代码,需要的朋友可以参考下
发布时间:2019-09-26
-
解析Python3之对象垃圾收集机制
在Python中,它在每个对象中保持了一个计数器,用于记录指向该对象的的引用的个数。这篇文章主要介绍了Python3中的对象垃圾收集机制,需要的朋友可以参考下
发布时间:2020-02-17
-
Python3单行定义多个变量或赋值的方法总结
今天小编就为大家分享一篇Python3单行定义多个变量或赋值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
发布时间:2019-07-25
-
python3读取Excel表格数据的代码分享
这篇文章主要介绍了python3 读取Excel表格中的数据的相关资料,需要的朋友可以参考下
发布时间:2020-01-18
-
python3+selenium实现126邮箱登陆发送功能
这篇文章主要为大家详细介绍了python3+selenium实现126邮箱登陆并发送邮件功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
发布时间:2019-06-11
-
Python3程序开发指南(第2版)
本书全面深入地讲解了Python语言,讲述了构成Python语言的8个关键要素,包含数据类型、控制结构与函数、模块、正则表达式、GUI程序设计等各个方面
大小:419.2 MBPython3电子书
-
Python3面向对象编程(英文)
本书讲解了类、数据封装、继承、多态、抽象和异常,更新了大量的内容,以反映出近来核心Python库的变化,帮助读者能够深入学习如何正确地使用Python面向对象编程技术来设计软件
大小:10.1 MBPython3电子书
-
笨办法学python3
大小:6 MBpython3
-
Python3爬虫、数据清洗与可视化实战
这是一套通过实战教初学者学习采集数据、清洗和组织数据进行分析及可视化的Python读物。以Python爬虫技术应用实战为主,适合Python 初学者及高等院校的相关专业学生
大小:232.8 MBPython3电子书
-
Python3.7从零开始学
本书专门针对Python新手量身定做,是编者学习和使用Python开发过程中的体会和经验总结,涵盖实际开发中重要的知识点,内容详尽,代码可读性及可操作性强。
大小:75.8 MBPython3.7电子书