简单了解python关键字global nonlocal区别


Posted in Python onSeptember 21, 2020

第一,两者的功能不同。global关键字修饰变量后标识该变量是全局变量,对该变量进行修改就是修改全局变量,而nonlocal关键字修饰变量后标识该变量是上一级函数中的局部变量,如果上一级函数中不存在该局部变量,nonlocal位置会发生错误(最上层的函数使用nonlocal修饰变量必定会报错)。

第二,两者使用的范围不同。global关键字可以用在任何地方,包括最上层函数中和嵌套函数中,即使之前未定义该变量,global修饰后也可以直接使用,而nonlocal关键字只能用于嵌套函数中,并且外层函数中定义了相应的局部变量,否则会发生错误(见第一)。

正常的

a = 1
def func():
  a = 10
  print(a)
func()
print(a)

运行结果:

10
1

使用global

a = 1
def func():
  global a
  a = 10
  print(a)
func()
print(a)

运行结果:

10
10

使用nonlocal

a = 1
def func():
  nonlocal a
  a = 10
  print(a)
func()
print(a)

运行结果:

10
0

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python解析最简单的验证码
Jan 07 Python
Python实现的爬取网易动态评论操作示例
Jun 06 Python
python的pandas工具包,保存.csv文件时不要表头的实例
Jun 14 Python
python实现坦克大战游戏 附详细注释
Mar 27 Python
python通过TimedRotatingFileHandler按时间切割日志
Jul 17 Python
python实现的自动发送消息功能详解
Aug 15 Python
python 批量修改 labelImg 生成的xml文件的方法
Sep 09 Python
查看端口并杀进程python脚本代码
Dec 17 Python
pytorch实现特殊的Module--Sqeuential三种写法
Jan 15 Python
Python实现队列的方法示例小结【数组,链表】
Feb 22 Python
简单了解python列表和元组的区别
May 14 Python
Python实战之OpenCV实现猫脸检测
Jun 26 Python
PIP和conda 更换国内安装源的方法步骤
Sep 21 #Python
python 字符串格式化的示例
Sep 21 #Python
基于python判断字符串括号是否闭合{}[]()
Sep 21 #Python
属性与 @property 方法让你的python更高效
Sep 21 #Python
Python如何在bool函数中取值
Sep 21 #Python
python 密码学示例——凯撒密码的实现
Sep 21 #Python
python 密码学示例——理解哈希(Hash)算法
Sep 21 #Python
You might like
php中将网址转换为超链接的函数
2011/09/02 PHP
php启动时候提示PHP startup的解决方法
2013/05/07 PHP
php.ini修改php上传文件大小限制的方法详解
2013/06/17 PHP
PHP资源管理框架Assetic简介
2014/06/12 PHP
php的curl封装类用法实例
2014/11/07 PHP
php将远程图片保存到本地服务器的实现代码
2015/08/03 PHP
PHP根据session与cookie用户登录状态操作类的代码
2016/05/13 PHP
php面试中关于面向对象的相关问题
2019/02/13 PHP
走出JavaScript初学困境—js初学
2008/12/29 Javascript
JavaScript判断密码强度(自写代码)
2013/09/06 Javascript
IE6浏览器中window.location.href无效的解决方法
2014/11/20 Javascript
JQuery动画与特效实例分析
2015/02/02 Javascript
《JavaScript高级编程》学习笔记之object和array引用类型
2015/11/01 Javascript
javascript数据结构之二叉搜索树实现方法
2015/11/25 Javascript
js验证框架实现代码分享
2016/05/18 Javascript
微信小程序 setData使用方法及常用错误解决办法
2017/05/11 Javascript
微信小程序 侧滑删除(左滑删除)
2017/05/23 Javascript
vue-quill-editor实现图片上传功能
2017/08/08 Javascript
Vue中使用方法、计算属性或观察者的方法实例详解
2018/10/31 Javascript
javascript实现小型区块链功能
2019/04/03 Javascript
layui实现鼠标移动到单元格上显示数据的方法
2019/09/11 Javascript
jQuery弹框插件使用方法详解
2020/05/26 jQuery
原生JavaScript实现刮刮乐
2020/09/29 Javascript
[03:30]DOTA2完美“圣”典精彩集锦
2016/12/27 DOTA
Python入门篇之条件、循环
2014/10/17 Python
如何将python中的List转化成dictionary
2016/08/15 Python
完美解决安装完tensorflow后pip无法使用的问题
2018/06/11 Python
python使用for循环计算0-100的整数的和方法
2019/02/01 Python
tensor和numpy的互相转换的实现示例
2019/08/02 Python
python 图像增强算法实现详解
2021/01/24 Python
css3动画过渡实现鼠标跟随导航效果
2018/02/08 HTML / CSS
HTML5 视频播放(video),JavaScript控制视频的实例代码
2018/10/08 HTML / CSS
LG西班牙网上商店:Tienda LG Online Es
2019/07/30 全球购物
城市轨道交通工程职业规划书范文
2014/01/18 职场文书
2014年房地产销售工作总结
2014/12/01 职场文书
出生证明格式
2015/06/15 职场文书