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 GAE、Django导出Excel的方法
Nov 24 Python
Python3实现的腾讯微博自动发帖小工具
Nov 11 Python
python解析xml文件实例分享
Dec 04 Python
从零学Python之引用和类属性的初步理解
May 15 Python
Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
Apr 23 Python
Python模块包中__init__.py文件功能分析
Jun 14 Python
Python操作SQLite数据库的方法详解
Jun 16 Python
Python中定时任务框架APScheduler的快速入门指南
Jul 06 Python
Python+OpenCV让电脑帮你玩微信跳一跳
Jan 04 Python
python中单下划线_的常见用法总结
Jul 10 Python
python石头剪刀布小游戏(三局两胜制)
Jan 20 Python
python自动化发送邮件实例讲解
Jan 04 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效率,提高php性能的一些方法
2011/03/24 PHP
在smarty中调用php内置函数的方法
2013/02/07 PHP
jQuery右键菜单contextMenu使用实例
2011/09/28 Javascript
javascript动态控制服务器控件实例
2014/09/05 Javascript
jquery使用正则表达式验证email地址的方法
2015/01/22 Javascript
JavaScript中的函数声明和函数表达式区别浅析
2015/03/27 Javascript
javascript实现dom动态创建省市纵向列表菜单的方法
2015/05/14 Javascript
AngularJs篇:使用AngularJs打造一个简易权限系统的实现代码
2016/12/26 Javascript
windows下vue-cli导入bootstrap样式
2017/04/25 Javascript
vue element-ui table表格滚动加载方法
2018/03/02 Javascript
Vue中的Props(不可变状态)
2018/09/29 Javascript
详解服务端预渲染之Nuxt(介绍篇)
2019/04/07 Javascript
JS匿名函数内部this指向问题详析
2019/05/10 Javascript
JS左右无缝轮播功能完整实例
2019/05/16 Javascript
简单了解JavaScript arguement原理及作用
2020/05/28 Javascript
[48:30]LGD vs infamous Supermajor小组赛D组 BO3 第一场 6.3
2018/06/04 DOTA
基于Python和Scikit-Learn的机器学习探索
2017/10/16 Python
利用Python进行数据可视化常见的9种方法!超实用!
2018/07/11 Python
python读取目录下最新的文件夹方法
2018/12/24 Python
Python图像处理之图片文字识别功能(OCR)
2019/07/30 Python
Python Multiprocessing多进程 使用tqdm显示进度条的实现
2019/08/13 Python
利用python爬取有道词典的方法
2020/12/08 Python
详解Python GUI编程之PyQt5入门到实战
2020/12/10 Python
canvas需要在标签里直接定义宽高
2014/12/17 HTML / CSS
全球性的在线商店:Vogca
2019/05/10 全球购物
班组长的岗位职责
2013/12/09 职场文书
高中毕业的自我鉴定
2013/12/09 职场文书
班组长安全职责
2014/01/05 职场文书
安全大检查实施方案
2014/02/22 职场文书
2014年接待工作总结
2014/11/26 职场文书
护士节慰问信
2015/02/15 职场文书
电影地道战观后感
2015/06/04 职场文书
html+css实现分层金字塔的实例
2021/06/02 HTML / CSS
Nginx 匹配方式
2022/05/15 Servers
Three.js实现雪糕地球的使用示例详解
2022/07/07 Javascript
go goth封装第三方认证库示例详解
2022/08/14 Golang