Python3中nonlocal和global的用法及区别

  • 更新时间:2020-07-16 08:08:28
  • 编辑:龚曼蔓
本站收集了一篇相关的编程文章,网友连鹏翼根据主题投稿了本篇教程内容,涉及到Python3、nonlocal、global、Python3中nonlocal和global的用法及区别介绍(附示例)相关内容,已被220网友关注,内容中涉及的知识点可以在下方直接下载获取。

参考资料

正文内容

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的值。

总结

主要区别有以下两点:

  1. 两者的功能不同。global关键字修饰变量后标识该变量是全局变量,对该变量进行修改就是修改全局变量,而nonlocal关键字修饰变量后标识该变量是上一级函数中的局部变量,如果上一级函数中不存在该局部变量,nonlocal位置会发生错误(最上层的函数使用nonlocal修饰变量必定会报错)。
  2. 两者使用的范围不同。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版)

    Python3程序开发指南(第2版)

    本书全面深入地讲解了Python语言,讲述了构成Python语言的8个关键要素,包含数据类型、控制结构与函数、模块、正则表达式、GUI程序设计等各个方面

    大小:419.2 MBPython3电子书

  • Python3面向对象编程(英文)

    Python3面向对象编程(英文)

    本书讲解了类、数据封装、继承、多态、抽象和异常,更新了大量的内容,以反映出近来核心Python库的变化,帮助读者能够深入学习如何正确地使用Python面向对象编程技术来设计软件

    大小:10.1 MBPython3电子书

  • 笨办法学python3

    笨办法学python3

    大小:6 MBpython3

  • Python3爬虫、数据清洗与可视化实战

    Python3爬虫、数据清洗与可视化实战

    这是一套通过实战教初学者学习采集数据、清洗和组织数据进行分析及可视化的Python读物。以Python爬虫技术应用实战为主,适合Python 初学者及高等院校的相关专业学生

    大小:232.8 MBPython3电子书

  • Python3.7从零开始学

    Python3.7从零开始学

    本书专门针对Python新手量身定做,是编者学习和使用Python开发过程中的体会和经验总结,涵盖实际开发中重要的知识点,内容详尽,代码可读性及可操作性强。

    大小:75.8 MBPython3.7电子书

用户留言