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中zfill()方法的使用教程
May 20 Python
python中pandas.DataFrame对行与列求和及添加新行与列示例
Mar 12 Python
为什么str(float)在Python 3中比Python 2返回更多的数字
Oct 16 Python
对python制作自己的数据集实例讲解
Dec 12 Python
python 实现将txt文件多行合并为一行并将中间的空格去掉方法
Dec 20 Python
python networkx 包绘制复杂网络关系图的实现
Jul 10 Python
Python reshape的用法及多个二维数组合并为三维数组的实例
Feb 07 Python
keras模型保存为tensorflow的二进制模型方式
May 25 Python
Pycharm快捷键配置详细整理
Oct 13 Python
OpenCV+python实现膨胀和腐蚀的示例
Dec 21 Python
python中用Scrapy实现定时爬虫的实例讲解
Jan 18 Python
python实现批量移动文件
Apr 05 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
Windows下的PHP5.0详解
2006/11/18 PHP
PHP反射实际应用示例
2019/04/03 PHP
php设计模式之适配器模式原理、用法及注意事项详解
2019/09/24 PHP
身份证号码前六位所代表的省,市,区, 以及地区编码下载
2007/04/12 Javascript
javascript网页关键字高亮代码
2008/07/30 Javascript
jQuery ajax在GBK编码下表单提交终极解决方案(非二次编码方法)
2010/10/20 Javascript
javascript tips提示框组件实现代码
2010/11/19 Javascript
Jquery.LazyLoad.js修正版下载,实现图片延迟加载插件
2011/03/12 Javascript
JavaScript代码简单实现求杨辉三角给定行的最大值
2013/10/29 Javascript
JavaScript函数作用域链分析
2015/02/13 Javascript
浅谈Javascript数组索引
2015/07/29 Javascript
Javascript实现登录记住用户名和密码功能
2017/03/22 Javascript
JQueryMiniUI按照时间进行查询的实现方法
2017/06/07 jQuery
微信小程序 空白页重定向解决办法
2017/06/27 Javascript
nodejs 搭建简易服务器的图文教程(推荐)
2017/07/18 NodeJs
Vue中的scoped实现原理及穿透方法
2018/05/15 Javascript
vue实现的仿淘宝购物车功能详解
2019/01/27 Javascript
vue多次循环操作示例
2019/02/08 Javascript
Vue实现商品分类菜单数量提示功能
2019/07/26 Javascript
vue中beforeRouteLeave实现页面回退不刷新的示例代码
2019/11/01 Javascript
python基于socket实现网络广播的方法
2015/04/29 Python
如何安装多版本python python2和python3共存以及pip共存
2018/09/18 Python
Python中的引用知识点总结
2019/05/20 Python
Python实现手绘图效果实例分享
2020/07/22 Python
Python代码注释规范代码实例解析
2020/08/14 Python
德国购买踏板车网站:Microscooter
2019/10/14 全球购物
大学生村官工作感言
2014/01/10 职场文书
高中校园广播稿
2014/01/11 职场文书
满月酒答谢词
2014/01/14 职场文书
《陈涉世家》教学反思
2014/04/12 职场文书
工作经历证明书范文
2014/11/02 职场文书
财产分割协议书
2016/03/22 职场文书
Python OpenCV形态学运算示例详解
2022/04/07 Python
SQL语句中EXISTS的详细用法大全
2022/06/25 MySQL
Spring中bean集合注入的方法详解
2022/07/07 Java/Android
阿里云服务器(windows)手动部署FTP站点详细教程
2022/08/05 Servers