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实现获取序列中最小的几个元素
Sep 25 Python
Python打印scrapy蜘蛛抓取树结构的方法
Apr 08 Python
Python错误处理操作示例
Jul 18 Python
python pexpect ssh 远程登录服务器的方法
Feb 14 Python
pyqt远程批量执行Linux命令程序的方法
Feb 14 Python
Python 使用 prettytable 库打印表格美化输出功能
Dec 26 Python
python实现将字符串中的数字提取出来然后求和
Apr 02 Python
浅谈pycharm导入pandas包遇到的问题及解决
Jun 01 Python
解决python便携版无法直接运行py文件的问题
Sep 01 Python
如何利用Python写个坦克大战
Nov 18 Python
python批量合成bilibili的m4s缓存文件为MP4格式 ver2.5
Dec 01 Python
pycharm 的Structure界面设置操作
Feb 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
德劲1102收音机的打理维修案例
2021/03/02 无线电
MySQL数据源表结构图示
2008/06/05 PHP
laravel框架实现后台登录、退出功能示例
2019/10/31 PHP
Colortip基于jquery的信息提示框插件在IE6下面的显示问题修正方法
2010/12/06 Javascript
js replace正则表达式应用案例讲解
2013/01/17 Javascript
jQuery循环遍历子节点并获取值的方法
2016/04/14 Javascript
JSON字符串转换JSONObject和JSONArray的方法
2016/06/03 Javascript
基于layer.js实现收货地址弹框选择然后返回相应的地址信息
2017/05/26 Javascript
JS实现简单短信验证码界面
2017/08/07 Javascript
详解小程序循环require之坑
2019/03/08 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
2019/09/11 Javascript
小程序接口的promise化的实现方法
2019/12/11 Javascript
Postman动态获取返回值过程详解
2020/06/30 Javascript
vue.js click点击事件获取当前元素对象的操作
2020/08/07 Javascript
使用Vant完成Dialog弹框案例
2020/11/11 Javascript
Vue向后台传数组数据,springboot接收vue传的数组数据实例
2020/11/12 Javascript
python虚拟环境virtualenv的使用教程
2017/10/20 Python
python:print格式化输出到文件的实例
2018/05/14 Python
python遍历文件夹,指定遍历深度与忽略目录的方法
2018/07/11 Python
python中报错"json.decoder.JSONDecodeError: Expecting value:"的解决
2019/04/29 Python
Python容器使用的5个技巧和2个误区总结
2019/09/26 Python
python计算导数并绘图的实例
2020/02/29 Python
python实现将range()函数生成的数字存储在一个列表中
2020/04/02 Python
解决Jupyter无法导入已安装的 module问题
2020/04/17 Python
解决python pandas读取excel中多个不同sheet表格存在的问题
2020/07/14 Python
Python3 ffmpeg视频转换工具使用方法解析
2020/08/10 Python
HTML5实现签到 功能
2018/10/09 HTML / CSS
菲律宾最大的网上花店和礼品店:PhilFlower.com
2018/02/09 全球购物
STAUD官方网站:洛杉矶独有的闲适风格
2019/04/11 全球购物
护理专业本科生自荐信
2013/10/01 职场文书
韩语专业职业生涯规划范文:成功之路就在我们脚下
2014/09/11 职场文书
活动总结书怎么写
2015/05/11 职场文书
会计入职心得体会
2016/01/22 职场文书
死磕 java同步系列之synchronized解析
2021/06/28 Java/Android
Python初识逻辑与if语句及用法大全
2021/08/07 Python
Python turtle编写简单的球类小游戏
2022/03/31 Python