简单了解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中readline判断文件读取结束的方法
Nov 08 Python
Python模仿POST提交HTTP数据及使用Cookie值的方法
Nov 10 Python
利用python打印出菱形、三角形以及矩形的方法实例
Aug 08 Python
python实现日常记账本小程序
Mar 10 Python
win7+Python3.5下scrapy的安装方法
Jul 31 Python
python实现梯度下降算法
Mar 24 Python
python实战串口助手_解决8串口多个发送的问题
Jun 12 Python
对python中基于tcp协议的通信(数据传输)实例讲解
Jul 22 Python
使用tensorflow显示pb模型的所有网络结点方式
Jan 23 Python
tensorflow将图片保存为tfrecord和tfrecord的读取方式
Feb 17 Python
Nginx+Uwsgi+Django 项目部署到服务器的思路详解
May 08 Python
使用Python封装excel操作指南
Jan 29 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引用效率问题分析
2012/03/23 PHP
基于PHP CURL获取邮箱地址的详解
2013/06/03 PHP
PHP static局部静态变量和全局静态变量总结
2014/03/02 PHP
将FCKeditor导入PHP+SMARTY的实现方法
2015/01/15 PHP
Yii2实现让关联字段支持搜索功能的方法
2016/08/10 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
2018/06/20 PHP
如何快速的呈现我们的网页的技巧整理
2007/07/01 Javascript
JavaScript 变量基础知识
2009/11/07 Javascript
html文件中jquery与velocity变量中的$冲突的解决方法
2013/11/01 Javascript
js中settimeout方法加参数的使用实例
2014/02/27 Javascript
使用forever管理nodejs应用教程
2014/06/03 NodeJs
JavaScript中操作字符串之localeCompare()方法的使用
2015/06/06 Javascript
jQuery快速实现商品数量加减的方法
2017/02/06 Javascript
ES5 ES6中Array对象去除重复项的方法总结
2017/04/27 Javascript
Vue波纹按钮组件制作
2018/04/30 Javascript
详解Vue-Router源码分析路由实现原理
2019/05/15 Javascript
详解Vue.js中引入图片路径的几种方式
2019/06/17 Javascript
使用jQuery mobile NuGet让你的网站在移动设备上同样精彩
2019/06/18 jQuery
vue中注册自定义的全局js方法
2019/11/15 Javascript
Vue强制组件重新渲染的方法讨论
2020/02/03 Javascript
2分钟实现一个Vue实时直播系统的示例代码
2020/06/05 Javascript
详解JavaScript 高阶函数
2020/09/14 Javascript
Python中的闭包实例详解
2014/08/29 Python
用Python实现服务器中只重载被修改的进程的方法
2015/04/30 Python
Python入门必须知道的11个知识点
2018/03/21 Python
python Tensor和Array对比分析
2020/01/08 Python
运行tensorflow python程序,限制对GPU和CPU的占用操作
2020/02/06 Python
Python 之 Json序列化嵌套类方式
2020/02/27 Python
PyCharm 光标变成黑块的解决方式
2021/02/06 Python
基于CSS3 animation动画属性实现轮播图效果
2017/09/12 HTML / CSS
毕业生造价工程师求职信
2013/10/17 职场文书
小学六一儿童节活动方案
2014/08/27 职场文书
典型事迹材料范文
2014/12/29 职场文书
JavaScript展开运算符和剩余运算符的区别详解
2022/02/18 Javascript
Nginx动静分离配置实现与说明
2022/04/07 Servers
微软官方消息,在 2023 年 4 月 11 日之后微软将不再为 Office 2013 和 Skype for Business 2015 提供安全更新
2022/04/21 数码科技