简单了解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实现将一个大文件按段落分隔为多个小文件的简单操作方法
Apr 17 Python
详解Python3操作Mongodb简明易懂教程
May 25 Python
Python编程之gui程序实现简单文件浏览器代码
Dec 08 Python
python3.5 tkinter实现页面跳转
Jan 30 Python
Python将list中的string批量转化成int/float的方法
Jun 26 Python
详解pandas如何去掉、过滤数据集中的某些值或者某些行?
May 15 Python
python实现实时视频流播放代码实例
Jan 11 Python
浅析Python中字符串的intern机制
Oct 03 Python
Anaconda详细安装步骤图文教程
Nov 12 Python
python 如何对logging日志封装
Dec 02 Python
Python 内置函数速查表一览
Jun 02 Python
Python常遇到的错误和异常
Nov 02 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魔术函数__call()用法实例分析
2015/02/13 PHP
php轻量级的性能分析工具xhprof的安装使用
2015/08/12 PHP
PHP自定义错误用法示例
2016/09/28 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
在多个页面使用同一个HTML片段的代码
2011/03/04 Javascript
javascript验证身份证完全方法具体实现
2013/11/18 Javascript
jquery ajax 简单范例(界面+后台)
2013/11/19 Javascript
带你快速理解javascript中的事件模型
2017/08/14 Javascript
给vue项目添加ESLint的详细步骤
2017/09/29 Javascript
Vue 进入/离开动画效果
2017/12/26 Javascript
微信小程序switch组件使用详解
2018/01/31 Javascript
vue中接口域名配置为全局变量的实现方法
2018/09/20 Javascript
js的各种数据类型判断的介绍
2019/01/19 Javascript
微信小程序使用map组件实现路线规划功能示例
2019/01/22 Javascript
说说如何利用 Node.js 代理解决跨域问题
2019/04/22 Javascript
在React中写一个Animation组件为组件进入和离开加上动画/过度效果
2019/06/24 Javascript
简单了解JavaScript中的执行上下文和堆栈
2019/06/24 Javascript
JavaScript实现简单计算器
2020/03/19 Javascript
python训练数据时打乱训练数据与标签的两种方法小结
2018/11/08 Python
解决pycharm的Python console不能调试当前程序的问题
2019/01/20 Python
python修改字典键(key)的方法
2019/08/05 Python
numpy.random.shuffle打乱顺序函数的实现
2019/09/10 Python
Django windows使用Apache实现部署流程解析
2020/10/12 Python
男女时尚与复古风格在线购物:RoseGal(全球免费送货)
2017/07/19 全球购物
全球最大化妆品零售网站:SkinStore
2020/10/24 全球购物
JRE、JDK、JVM之间的关系怎样
2012/05/16 面试题
MySQL面试题
2014/01/12 面试题
汽车维修专业毕业生的求职信分享
2013/12/04 职场文书
人力资源作业细则
2014/03/03 职场文书
贵阳市党的群众路线教育实践活动党(工)委领导班子整改方案
2014/10/26 职场文书
2014年学校禁毒工作总结
2014/12/23 职场文书
今日说法观后感
2015/06/08 职场文书
追悼词范文大全
2015/06/23 职场文书
2016新年感言
2015/08/03 职场文书
pandas数值排序的实现实例
2021/07/25 Python
分享Python获取本机IP地址的几种方法
2022/03/17 Python