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操作MongoDB基础知识
Nov 01 Python
Python 分析Nginx访问日志并保存到MySQL数据库实例
Mar 13 Python
python中import学习备忘笔记
Jan 24 Python
Python实现将罗马数字转换成普通阿拉伯数字的方法
Apr 19 Python
rabbitmq(中间消息代理)在python中的使用详解
Dec 14 Python
Django中使用celery完成异步任务的示例代码
Jan 23 Python
python如何为被装饰的函数保留元数据
Mar 21 Python
Python SMTP发送邮件遇到的一些问题及解决办法
Oct 24 Python
如何使用Python标准库进行性能测试
Jun 25 Python
python实现动态数组的示例代码
Jul 15 Python
python实现矩阵和array数组之间的转换
Nov 29 Python
Python爬取酷狗MP3音频的步骤
Feb 26 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文件夹的创建与删除方法
2015/01/24 PHP
在WordPress中获取数据库字段内容和添加主题设置菜单
2016/01/11 PHP
js 覆盖和重载 函数
2009/09/25 Javascript
简单实用的js调试logger组件实现代码
2010/11/20 Javascript
JavaScript NodeTree导航栏(菜单项JSON类型/自制)
2013/02/01 Javascript
jquery动态改变div宽度和高度
2015/02/09 Javascript
JavaScript操作DOM元素的childNodes和children区别
2015/04/01 Javascript
js实现鼠标经过表格行变色的方法
2015/05/12 Javascript
jQuery多级手风琴菜单实例讲解
2015/10/22 Javascript
VUE实现表单元素双向绑定(总结)
2017/08/08 Javascript
详解微信小程序-扫一扫 wx.scanCode() 扫码大变身
2019/04/30 Javascript
Vue 按照创建时间和当前时间显示操作(刚刚,几小时前,几天前)
2020/09/10 Javascript
解决vue-loader加载不上的问题
2020/10/21 Javascript
jenkins自动构建发布vue项目的方法步骤
2021/01/04 Vue.js
Python删除windows垃圾文件的方法
2015/07/14 Python
使用Python简单的实现树莓派的WEB控制
2016/02/18 Python
python3实现ftp服务功能(客户端)
2017/03/24 Python
Python实现提取XML内容并保存到Excel中的方法
2018/09/01 Python
python中pika模块问题的深入探究
2018/10/13 Python
Python注释、分支结构、循环结构、伪“选择结构”用法实例分析
2020/01/09 Python
Python模块 _winreg操作注册表
2020/02/05 Python
Pycharm常用快捷键总结及配置方法
2020/11/14 Python
如何基于Python和Flask编写Prometheus监控
2020/11/25 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
美国礼品卡商城: Gift Card Mall
2017/08/25 全球购物
菲律宾优惠券网站:MetroDeal
2019/04/12 全球购物
系统管理员的职责包括那些?管理的对象是什么?
2013/01/18 面试题
大学同学十年聚会感言
2014/02/21 职场文书
2014年最新个人对照检查材料范文
2014/09/25 职场文书
邀请函怎么写
2015/01/30 职场文书
廉洁自律个人总结
2015/02/14 职场文书
呼兰河传读书笔记
2015/06/30 职场文书
五星级酒店宣传口号
2015/12/25 职场文书
2017年大学生寒假社会实践活动总结
2016/04/06 职场文书
分享Python获取本机IP地址的几种方法
2022/03/17 Python
详解CSS3浏览器兼容
2022/12/24 HTML / CSS