简单了解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 排列组合之itertools
Mar 20 Python
探究Python多进程编程下线程之间变量的共享问题
May 05 Python
python使用scrapy发送post请求的坑
Sep 04 Python
Python Matplotlib实现三维数据的散点图绘制
Mar 19 Python
python实现按首字母分类查找功能
Oct 31 Python
Python pandas自定义函数的使用方法示例
Nov 20 Python
Python生成词云的实现代码
Jan 14 Python
python+Selenium自动化测试——输入,点击操作
Mar 06 Python
python下载的库包存放路径
Jul 27 Python
如何真正的了解python装饰器
Aug 14 Python
Python 删除List元素的三种方法remove、pop、del
Nov 16 Python
Python Spyder 调出缩进对齐线的操作
Feb 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的输入输出流
2007/02/14 PHP
PHP+Mysql实现多关键字与多字段生成SQL语句的函数
2014/11/05 PHP
PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别分析
2017/07/03 PHP
javascript 得到变量类型的函数
2010/05/19 Javascript
Javascript技巧之不要用for in语句对数组进行遍历
2010/10/20 Javascript
jquery中dom操作和事件的实例学习-表单验证
2011/11/30 Javascript
jQuery表单验证插件formValidator(改进版)
2012/02/03 Javascript
JavaScript操作XML 使用百度RSS作为新闻源示例
2012/02/17 Javascript
jquery Mobile入门—外部链接切换示例代码
2013/01/08 Javascript
JS使用oumousemove和oumouseout动态改变图片显示的方法
2015/03/31 Javascript
在JavaScript中使用对数Math.log()方法的教程
2015/06/15 Javascript
关注jquery技巧提高jquery技能(前端开发必学)
2015/11/02 Javascript
jQuery mobile的header和footer在点击屏幕的时候消失的解决办法
2016/07/01 Javascript
JS验证input输入框(字母,数字,符号,中文)
2017/03/23 Javascript
原生js封装添加class,删除class的实例
2017/11/06 Javascript
jsonp跨域及实现百度首页联想功能的方法
2018/08/30 Javascript
vue配置font-awesome5的方法步骤
2019/01/27 Javascript
vue 输入电话号码自动按3-4-4分割功能的实现代码
2020/04/30 Javascript
[38:23]完美世界DOTA2联赛循环赛 FTD vs PXG BO2第二场 11.01
2020/11/02 DOTA
python将文本中的空格替换为换行的方法
2018/03/19 Python
python绘制直线的方法
2018/06/30 Python
python 实现提取某个索引中某个时间段的数据方法
2019/02/01 Python
python求最大值,不使用内置函数的实现方法
2019/07/09 Python
Django ImageFiled上传照片并显示的方法
2019/07/28 Python
Python SSL证书验证问题解决方案
2020/01/13 Python
wxPython修改文本框颜色过程解析
2020/02/14 Python
python使用Word2Vec进行情感分析解析
2020/07/31 Python
Crocs美国官方网站:卡骆驰洞洞鞋
2017/08/04 全球购物
ECCO英国官网:丹麦鞋履品牌
2019/09/03 全球购物
门卫岗位职责
2013/11/15 职场文书
珍惜资源的建议书
2014/08/26 职场文书
工厂见习报告范文
2014/10/31 职场文书
2014年网管工作总结
2014/12/11 职场文书
怎样写辞职信
2015/02/27 职场文书
2015年教师节贺卡寄语
2015/03/24 职场文书
创业计划书之物流运送
2019/09/17 职场文书