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字符串拼接的几种方法整理
Aug 02 Python
Python实战之制作天气查询软件
May 14 Python
python中struct模块之字节型数据的处理方法
Aug 27 Python
6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)
Jan 06 Python
keras 特征图可视化实例(中间层)
Jan 24 Python
Python抓包程序mitmproxy安装和使用过程图解
Mar 02 Python
python读取当前目录下的CSV文件数据
Mar 11 Python
Pycharm IDE的安装和使用教程详解
Apr 30 Python
opencv+python实现鼠标点击图像,输出该点的RGB和HSV值
Jun 02 Python
Python 数据的累加与统计的示例代码
Aug 03 Python
python语言time库和datetime库基本使用详解
Dec 25 Python
Python制作表白爱心合集
Jan 22 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常用开发函数解析之数组篇[未完结]
2012/07/30 PHP
php实现批量下载百度云盘文件例子分享
2014/04/10 PHP
PHP 正则表达式常用函数
2014/08/17 PHP
php调用自己java程序的方法详解
2016/05/13 PHP
Yii框架实现邮箱激活的方法【数字签名】
2016/10/18 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
JS字符串截取函数实例
2013/12/27 Javascript
JavaScript Serializer序列化时间处理示例
2014/07/31 Javascript
javascript和jquery实现设置和移除文本框默认值效果代码
2015/01/13 Javascript
举例详解JavaScript中Promise的使用
2015/06/24 Javascript
javascript常用正则表达式汇总
2015/07/31 Javascript
JavaScript实现删除,移动和复制文件的方法
2015/08/05 Javascript
jQuery UI Grid 模态框中的表格实例代码
2017/04/01 jQuery
NodeJS实现自定义流的方法
2018/08/01 NodeJs
vue添加class样式实例讲解
2019/02/12 Javascript
微信小程序实现渐入渐出动画效果
2019/06/13 Javascript
ES6函数实现排它两种写法解析
2020/05/13 Javascript
vue设置全局访问接口API地址操作
2020/08/14 Javascript
如何在vue中使用HTML 5 拖放API
2021/01/14 Vue.js
Python标准库之多进程(multiprocessing包)介绍
2014/11/25 Python
Python使用pygame模块编写俄罗斯方块游戏的代码实例
2015/12/08 Python
Python3实战之爬虫抓取网易云音乐的热门评论
2017/10/09 Python
python3中os.path模块下常用的用法总结【推荐】
2018/09/16 Python
python使用Matplotlib画条形图
2020/03/25 Python
python实现多层感知器MLP(基于双月数据集)
2019/01/18 Python
python实现学生通讯录管理系统
2021/02/25 Python
使用iframe+postMessage实现页面跨域通信的示例代码
2020/01/14 HTML / CSS
沙龙级头发造型工具:FOXYBAE
2018/07/01 全球购物
电气专业推荐信范文
2013/11/18 职场文书
大学生创业项目方案
2014/03/08 职场文书
高级工程师英文求职信
2014/03/19 职场文书
企业法人授权委托书
2014/09/25 职场文书
答谢词范文
2015/01/05 职场文书
离职告别感言
2015/08/04 职场文书
python实现会员管理系统
2022/03/18 Python
css3手动实现pc端横向滚动
2022/06/21 HTML / CSS