简单了解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(Tornado)模拟登录小米抢手机
Nov 12 Python
python基础教程之实现石头剪刀布游戏示例
Feb 11 Python
Python实现的下载8000首儿歌的代码分享
Nov 21 Python
python 不以科学计数法输出的方法
Jul 16 Python
python实现点对点聊天程序
Jul 28 Python
Python3中lambda表达式与函数式编程讲解
Jan 14 Python
python可视化实现代码
Jan 15 Python
python 实现读取一个excel多个sheet表并合并的方法
Feb 12 Python
Jupyter Notebook打开任意文件夹操作
Apr 14 Python
python定义类的简单用法
Jul 24 Python
小结Python的反射机制
Sep 28 Python
安装不同版本的tensorflow与models方法实现
Feb 20 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实现ping
2006/10/09 PHP
php 时间计算问题小结
2009/01/04 PHP
php数据库抽象层 PDO
2011/05/07 PHP
使用Linux五年积累的一些经验技巧
2013/06/20 PHP
PHP文件去掉PHP注释空格的函数分析(PHP代码压缩)
2013/07/02 PHP
php取出数组单个值的方法
2018/03/12 PHP
web基于浏览器的本地存储方法应用
2012/11/27 Javascript
jQuery实现列表自动滚动循环滚动展示新闻
2014/08/22 Javascript
JS判断字符串包含的方法
2015/05/05 Javascript
你所不了解的javascript操作DOM的细节知识点(一)
2015/06/17 Javascript
QQ登录背景闪动效果附效果演示源码下载
2015/09/22 Javascript
jquery mobile 移动web(5)
2015/12/20 Javascript
ajax异步请求详解
2017/01/06 Javascript
nodejs个人博客开发第七步 后台登陆
2017/04/12 NodeJs
如何从零开始手写Koa2框架
2019/03/22 Javascript
Python的Django框架中模板碎片缓存简介
2015/07/24 Python
OpenCV 轮廓检测的实现方法
2019/07/03 Python
Python 中的 import 机制之实现远程导入模块
2019/10/29 Python
python中的RSA加密与解密实例解析
2019/11/18 Python
Python中的sys.stdout.write实现打印刷新功能
2020/02/21 Python
python属于跨平台语言码
2020/06/09 Python
python中 _、__、__xx__()区别及使用场景
2020/06/30 Python
Python tkinter制作单机五子棋游戏
2020/09/14 Python
说说在weblogic中开发消息Bean时的persistent与non-persisten的差别
2013/04/07 面试题
当x.equals(y)等于true时,x.hashCode()与y.hashCode()可以不相等,这句话对不对
2015/05/02 面试题
保险经纪人求职信
2014/03/11 职场文书
六个一活动实施方案
2014/03/21 职场文书
安全承诺书格式
2014/05/21 职场文书
乡镇党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
2014年初级职称工作总结
2014/12/08 职场文书
2015年小学师德师风建设工作总结
2015/10/23 职场文书
推广普通话宣传标语口号
2015/12/26 职场文书
未来,这5大方向都很适合创业
2019/07/22 职场文书
实用干货:敬酒词大全,帮你应付各种场合
2019/11/21 职场文书
教你利用Selenium+python自动化来解决pip使用异常
2021/05/20 Python
Win11 Beta 22621.601 和 22622.601今日发布 KB5017384修复内容汇总
2022/09/23 数码科技