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中global用法实例分析
Apr 30 Python
浅析Python基础-流程控制
Mar 18 Python
python批量制作雷达图的实现方法
Jul 26 Python
Python 中迭代器与生成器实例详解
Mar 29 Python
python编程实现12306的一个小爬虫实例
Dec 27 Python
python实现微信远程控制电脑
Feb 22 Python
用Python徒手撸一个股票回测框架搭建【推荐】
Aug 05 Python
Django CBV与FBV原理及实例详解
Aug 12 Python
python requests抓取one推送文字和图片代码实例
Nov 04 Python
PyTorch和Keras计算模型参数的例子
Jan 02 Python
python简单实现9宫格图片实例
Sep 03 Python
python中pandas对多列进行分组统计的实现
Jun 18 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与mysql建立连接并执行SQL语句的代码
2011/07/04 PHP
深入理解PHP内核(一)
2015/11/10 PHP
PHP简单实现文本计数器的方法
2016/04/28 PHP
Yii2汉字转拼音类的实例代码
2017/04/18 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
2020/03/26 PHP
让table变成exls的示例代码
2014/03/24 Javascript
JavaScript中Date.toSource()方法的使用教程
2015/06/12 Javascript
jQuery控制DIV层实现由大到小,由远及近动画变化效果
2015/10/09 Javascript
jQuery移动页面开发中的触摸事件与虚拟鼠标事件简介
2015/12/03 Javascript
NodeJS创建基础应用并应用模板引擎
2016/04/12 NodeJs
详解jQuery简单的表单应用
2016/12/16 Javascript
Angular2使用Angular CLI快速搭建工程(一)
2017/05/21 Javascript
jQuery实现一个简单的验证码功能
2017/06/26 jQuery
JavaScript函数apply()和call()用法与异同分析
2018/08/10 Javascript
微信开发之企业付款到银行卡接口开发的示例代码
2018/09/18 Javascript
记一次vue-webpack项目优化实践详解
2019/02/17 Javascript
vue改变对象或数组时的刷新机制的方法总结
2019/04/24 Javascript
[01:30:55]VG vs Mineski Supermajor 败者组 BO3 第三场 6.6
2018/06/07 DOTA
在Python程序和Flask框架中使用SQLAlchemy的教程
2016/06/06 Python
python爬虫中get和post方法介绍以及cookie作用
2018/02/08 Python
Python 实现数据结构-循环队列的操作方法
2019/07/17 Python
Django视图扩展类知识点详解
2019/10/25 Python
python检查目录文件权限并修改目录文件权限的操作
2020/03/11 Python
利用CSS3制作简单的3d半透明立方体图片展示
2017/03/25 HTML / CSS
AmazeUI 加载进度条的实现示例
2020/08/20 HTML / CSS
美丽家庭事迹材料
2014/05/03 职场文书
十佳标兵事迹材料
2014/08/18 职场文书
吴仁宝观后感
2015/06/09 职场文书
2016党校学习心得体会范文
2016/01/07 职场文书
团队拓展训练心得体会
2016/01/12 职场文书
2016五四青年节活动总结范文
2016/04/06 职场文书
PyTorch 如何检查模型梯度是否可导
2021/06/05 Python
浅谈Java实现分布式事务的三种方案
2021/06/11 Java/Android
Java用自带的Image IO给图片添加水印
2021/06/15 Java/Android
MySQL8.0升级的踩坑历险记
2021/11/01 MySQL
Python学习之时间包使用教程详解
2022/03/21 Python