python global和nonlocal用法解析


Posted in Python onFebruary 03, 2020

这篇文章主要介绍了python global和nonlocal用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

◆global和nonlocal是Python的两个重要变量作用域关键字

1.global用在全局变量,应用场景:
变量定义在函数外部的时候,如果函数里面想改变这个全局变量的值,需要在当前的引用函数里面重新定义一个变量 并用关键字global修饰。

例如:

a=1
def b():
  a+=1
  print(a)
b()

用ide写完这段代码的时候,还没运行就会报红线提示错误,运行之后产生错误,错误内容为:UnboundLocalError: local variable 'a' referenced before assignment。

解决方案:函数中重新声明变量并加修饰符global修改:

#!/usr/bin/env python 
# encoding: utf-8 
a=1
def b():
  global a
  a+=1
  print(a)
b()

2.nonlocal非全局变量,应用场景:

在函数的函数里面使用函数的变量。表达的可能有点混乱,看代码就知道了

#!/usr/bin/env python 
# encoding: utf-8
def b():
  num2=1
  def c():
   nonlocal num2#为了修改非全局变量
   num2+=2
   print(num2)
  return c
b()()

3.综合应用

#!/usr/bin/env python 
# encoding: utf-8 
gcount = 0
 
def global_test():
  global gcount
  s=0
  def g():
    nonlocal s
    s+=2
    print(s)
  return g
  gcount+=1
  print (gcount)
global_test()()

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

Python 相关文章推荐
python批量修改文件名的实现代码
Sep 01 Python
Python文件夹与文件的相关操作(推荐)
Jul 25 Python
Android分包MultiDex策略详解
Oct 30 Python
python如何为被装饰的函数保留元数据
Mar 21 Python
python3 读取Excel表格中的数据
Oct 16 Python
Python实现的KMeans聚类算法实例分析
Dec 29 Python
面向对象学习之pygame坦克大战
Sep 11 Python
python多环境切换及pyenv使用过程详解
Sep 27 Python
学python安装的软件总结
Oct 12 Python
Python多线程爬取豆瓣影评API接口
Oct 22 Python
django在开发中取消外键约束的实现
May 20 Python
Python3 类型标注支持操作
Jun 02 Python
Tensorflow设置显存自适应,显存比例的操作
Feb 03 #Python
解决Tensorflow占用GPU显存问题
Feb 03 #Python
通过Turtle库在Python中绘制一个鼠年福鼠
Feb 03 #Python
python爬虫模块URL管理器模块用法解析
Feb 03 #Python
Tensorflow实现多GPU并行方式
Feb 03 #Python
python如何通过twisted搭建socket服务
Feb 03 #Python
关于Tensorflow分布式并行策略
Feb 03 #Python
You might like
PHP分页显示制作详细讲解
2008/11/19 PHP
php实现首页链接查询 友情链接检查的代码
2010/01/05 PHP
关于mysql字符集设置了character_set_client=binary 在gbk情况下会出现表描述是乱码的情况
2013/01/06 PHP
php 使用array函数实现分页
2015/02/13 PHP
thinkPHP实现MemCache分布式缓存功能
2016/03/23 PHP
PHP-FPM运行状态的实时查看及监控详解
2016/11/18 PHP
laravel 解决paginate查询多个字段报错的问题
2019/10/22 PHP
PHP数组基本用法与知识点总结
2020/06/02 PHP
动态调用css文件——jquery的应用
2007/02/20 Javascript
用于判断用户注册时,密码强度的JS代码
2009/01/01 Javascript
MC Dialog js弹出层 完美兼容多浏览器(5.6更新)
2010/05/06 Javascript
JS图片预加载 JS实现图片预加载应用
2012/12/03 Javascript
JS 页面计时器示例代码
2013/10/28 Javascript
javascript和jquery实现设置和移除文本框默认值效果代码
2015/01/13 Javascript
js实现向右横向滑出的二级菜单效果
2015/08/27 Javascript
JS+CSS实现六级网站导航主菜单效果
2015/09/28 Javascript
《JavaScript高级编程》学习笔记之object和array引用类型
2015/11/01 Javascript
js判断手机浏览器操作系统和微信浏览器的方法
2016/04/30 Javascript
jQuery 3.0 的 setter和getter 模式详解
2016/07/11 Javascript
JavaScript实现类似淘宝的购物车效果
2017/03/16 Javascript
详解Node.js中exports和module.exports的区别
2017/04/19 Javascript
vue router路由嵌套不显示问题的解决方法
2017/06/17 Javascript
解决vue.js在编写过程中出现空格不规范报错的问题
2017/09/20 Javascript
解决vant-UI库修改样式无效的问题
2020/11/03 Javascript
python的Template使用指南
2014/09/11 Python
Python+django实现简单的文件上传
2016/08/17 Python
Python实现的网页截图功能【PyQt4与selenium组件】
2018/07/12 Python
python 根据网易云歌曲的ID 直接下载歌曲的实例
2019/08/24 Python
在tensorflow中实现屏蔽输出的log信息
2020/02/04 Python
Windows下PyCharm配置Anaconda环境(超详细教程)
2020/07/31 Python
python 如何读、写、解析CSV文件
2021/03/03 Python
CSS3解析抖音LOGO制作的方法步骤
2019/04/11 HTML / CSS
vue实现倒计时功能
2021/03/24 Vue.js
怎样写好自我评价呢?
2014/02/16 职场文书
python3实现常见的排序算法(示例代码)
2021/07/04 Python
不负正版帝国之名 《重返帝国》引领SLG手游制作新的标杆
2022/04/07 其他游戏