广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python3 关键字nonlocal
  • 862
分享到

Python3 关键字nonlocal

关键字nonlocal 2023-01-31 08:01:54 862人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

关键字nonlocal 在python 2.x中,闭包只能读外部函数的变量,而不能改写它。为了解决这个问题,Python 3.x引入了nonlocal关键字,在闭包内用nonlocal声明变量,就可以让解释器在外层函数中查找变量名。 注意

关键字nonlocal

python 2.x中,闭包只能读外部函数的变量,而不能改写它。为了解决这个问题,Python 3.x引入了nonlocal关键字,在闭包内用nonlocal声明变量,就可以让解释器在外层函数中查找变量名。

注意:关键字nonlocal:是python3.X中出现的,所以在python2.x中无法直接使用.
关键字global

Python里只有2种作用域:全局作用域和局部作用域。全局作用域是指当前代码所在模块的作用域,局部作用域是指当前函数或方法所在的作用域。局部作用域里的代码可以读外部作用域(包括全局作用域)里的变量,但不能更改它。如果想更改它,这里就要使用global关键字了

实例

关键字nonlocal的作用与关键字global类似,使用nonlocal关键字可以在一个嵌套的函数中修改嵌套作用域中的变量。
看两个例子
实例1

1
2
3
4
5
6
name = 'pythontab'
def func()

global name
name = 'pythontab.com'

func()
print(name)

结果:
1
pythontab.com

实例2

1
2
3
4
5
6
7
8
def func():

name = 'pythontab'
def foo():
    nonlocal name
    name = 'pythontab.com'
foo()
print(name)

func()

结果:
1
pythontab.com

注意看, 实例2中并没有使用global关键字而改变了name的值。

总结

主要区别有以下两点:

  1. 两者的功能不同。global关键字修饰变量后标识该变量是全局变量,对该变量进行修改就是修改全局变量,而nonlocal关键字修饰变量后标识该变量是上一级函数中的局部变量,如果上一级函数中不存在该局部变量,nonlocal位置会发生错误(最上层的函数使用nonlocal修饰变量必定会报错)。
  2. 两者使用的范围不同。global关键字可以用在任何地方,包括最上层函数中和嵌套函数中,即使之前未定义该变量,global修饰后也可以直接使用,而nonlocal关键字只能用于嵌套函数中,并且外层函数中定义了相应的局部变量,否则会发生错误(见1)。

--结束END--

本文标题: Python3 关键字nonlocal

本文链接: https://www.lsjlt.com/news/193474.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python3 关键字nonlocal
    关键字nonlocal 在Python 2.x中,闭包只能读外部函数的变量,而不能改写它。为了解决这个问题,Python 3.x引入了nonlocal关键字,在闭包内用nonlocal声明变量,就可以让解释器在外层函数中查找变量名。 注意...
    99+
    2023-01-31
    关键字 nonlocal
  • Python nonlocal关键字 与 global 关键字解析
    目录1.nonlocal2.globalpython引用变量的顺序: 当前作用域局部变量->外层作用域变量->当前模块中的全局变量->python内置变量 1.no...
    99+
    2022-11-13
  • Python关键字之global与nonlocal
    目录Python关键字 global与nonlocalglobalnonloacl总结Python关键字 global与nonlocal global def test(): #...
    99+
    2022-11-13
  • Python中nonlocal关键字与global关键字怎么用
    小编给大家分享一下Python中nonlocal关键字与global关键字怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!python引用变量的顺序: 当前作...
    99+
    2023-06-29
  • Python关键字global与nonlocal怎么用
    这篇文章主要讲解了“Python关键字global与nonlocal怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python关键字global与nonlocal怎么用”吧!Pytho...
    99+
    2023-06-29
  • Python局部函数及用法(含nonlocal关键字)
    目录Python局部函数及用法Python局部函数及用法 通过前面的学习我们知道,Python 函数内部可以定义变量,这样就产生了局部变量,有读者可能会问,Python 函数内部能定...
    99+
    2022-12-26
    Python局部函数 Python局部函数用法 Python nonlocal关键字
  • Python中关键字nonlocal和global的声明与解析
    一、Python中global与nonlocal 声明 如下代码 a = 10 def foo(): a = 100 执行foo() 结果 a 还是10 函数中对变量的赋值,变量始终绑...
    99+
    2022-06-04
    关键字 声明 Python
  • Python3 关键字 in 和 is
    高数中学到的集合,判断这个集合是否包含这个元素,换句话就是这个元素在不在这个集合中。 判断 1 这个元素在不在 a 列表中,在就返回 True(第 3 行),否则返回 False (第 5 行) 也可以对 in 这个关键字取反 not...
    99+
    2023-01-31
    关键字
  • python3 搜索关键字小程序
    #!/usr/bin/python3 #luck import sys filename = input('请输入您要搜索的路径及文档名称:') if len(filename) == 0:     sys.exit('不能为空!') wh...
    99+
    2023-01-31
    搜索关键字 程序
  • Python3之命名关键字参数
    def func(x,y,*,a,b): print(x) print(y) print(a) print(b) func(1,2,a=3,b=4) 在*后面的参数都是命名关键字参数,传值的时候...
    99+
    2023-01-31
    关键字 参数
  • Python3 系列之 可变参数和关键字
    刚开始接触 python 的时候,对 python 中的 *wargs (可变参数) 和 **kwargs (关键字参数)的理解不是很透彻,看了一下 《Explore Python》一书,里面对这一部分的描述相对浅显易懂, 这里依据个人...
    99+
    2023-01-30
    关键字 参数 系列之
  • synchronized 关键字
    文章目录 一、synchronized 的特性互斥可重入 二、 synchronized 使用示例三、 java标准库的线程安全类四、 死锁可重入死锁相互争夺锁哲学家就餐问题死锁的四个必...
    99+
    2023-09-04
    java 开发语言 操作系统
  • Mysql Explain 关键字
    -- 实际SQL,查找用户名为Jefabc的员工 select * from emp where name = "Jefabc"; -- 查看SQL是否使用索引,前面加上explain即可 explain sele...
    99+
    2021-11-06
    Mysql Explain 关键字
  • Python中有哪些关键字及关键字的用法
    目录Python有哪些关键字1.and , or2.del3.from4.golbal5.with6.while, for…in…7.assert8.pa...
    99+
    2023-02-04
    python关键字用法 python关键字
  • 详解JS中continue关键字和break关键字的区别
    目录1.框架2.简单介绍3.代码演示4.演示break1.框架 <!DOCTYPE html> <html> <head> ...
    99+
    2022-11-13
    JS continue break区别 JS continue break
  • C++之explicit关键字
    目录一、单参构造函数二、多参构造函数👉构造函数不仅可以构造与初始化对象,对于单个参数或者除第一个参数无默认值其余均有默认值的构造函数,还具有类型转换的作用 一、单参构造函数 还是老朋...
    99+
    2023-05-15
    C++ explicit关键字 explicit关键字 C++ explicit
  • SQL关键字详解
    当前市场中,数据库在互联网整个技术链中的重要性是亘古不变的,站在实现业务功能的角度来说我们最常用的就是与数据库和缓存进行交互,而最终持久化存储最常见的依旧是关系型数据库。数据库中我们做常用的就是SQL基本查询语言,甚至有些人认为数据库就是S...
    99+
    2023-10-07
    数据库 mysql
  • Google关键字工具
    Google关键字工具【199cloud-艾娜】Google 关键字工具地址:https://adwords.google.com/select/KeywordToolExternalGoogle 关键字工具主要有以下用途和特征:网站初建,...
    99+
    2023-06-03
  • mysql中的关键字
    MySQL是一种流行的开源关系型数据库管理系统,包含许多关键字,这些关键字在MySQL中具有特殊的含义,用于执行各种数据库操作。以下是MySQL中的一些关键字及其用法: ADD:用于向现有表添加一列或...
    99+
    2023-09-05
    mysql 数据库 sql
  • ES6 关键字 let 和 ES5 及关键字 var 的区别解析
    目录var 关键字let 关键字补充var 关键字 在 ES5 及以前,通过var在块级作用域中声明的变量,外边也可以访问。块级作用域就是一对{}的作用域;块级作用域可以是控制语句的...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作