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进行TCP网络编程的教程
Apr 29 Python
Python二叉搜索树与双向链表转换实现方法
Apr 29 Python
Python使用PIL模块生成随机验证码
Nov 21 Python
tensorflow创建变量以及根据名称查找变量
Mar 10 Python
利用Python进行数据可视化常见的9种方法!超实用!
Jul 11 Python
python TKinter获取文本框内容的方法
Oct 11 Python
python中bytes和str类型的区别
Oct 21 Python
Python for循环与getitem的关系详解
Jan 02 Python
Python文件操作方法详解
Feb 09 Python
python与c语言的语法有哪些不一样的
Sep 13 Python
Python超简单容易上手的画图工具库推荐
May 10 Python
python 标准库原理与用法详解之os.path篇
Oct 24 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
Discuz板块横排显示图片的实现方法
2007/05/28 PHP
详解php命令注入攻击
2019/04/06 PHP
在laravel中实现将查询的对象转换为多维数组的函数
2019/10/21 PHP
需要做特殊处理的DOM元素属性的访问
2010/11/05 Javascript
jquery如何把参数列严格转换成数组实现思路
2013/04/01 Javascript
jquery动态添加删除div 具体实现
2013/07/20 Javascript
实现只能输入数字的input不用replace方法
2013/09/12 Javascript
JS实现程序暂停与继续功能代码解读
2013/10/10 Javascript
javascript自定义startWith()和endWith()的两种方法
2013/11/11 Javascript
浅析jquery某一元素重复绑定的问题
2014/01/03 Javascript
简单的jQuery banner图片轮播实例代码
2016/03/04 Javascript
移动端基础事件总结与应用
2017/01/12 Javascript
nodejs爬虫遇到的乱码问题汇总
2017/04/07 NodeJs
angular实现spa单页面应用实例
2017/07/10 Javascript
React教程之封装一个Portal可复用组件的方法
2018/01/02 Javascript
vuejs2.0运用原生js实现简单拖拽元素功能
2020/08/21 Javascript
vue实现百度语音合成的实例讲解
2019/10/14 Javascript
JS回调函数深入理解
2019/10/16 Javascript
JS中作用域以及变量范围分析
2020/07/18 Javascript
Vue表单提交点击事件只允许点击一次的实例
2020/10/23 Javascript
pandas中Timestamp类用法详解
2017/12/11 Python
windows下pycharm安装、创建文件、配置默认模板
2018/07/31 Python
python判断完全平方数的方法
2018/11/13 Python
python requests.post带head和body的实例
2019/01/02 Python
linux环境中没有网络怎么下载python
2019/07/07 Python
如何用OpenCV -python3实现视频物体追踪
2019/12/04 Python
详解css position 5种不同的值的用法
2019/07/30 HTML / CSS
HTML5 Canvas实现平移/放缩/旋转deom示例(附截图)
2013/07/04 HTML / CSS
党员批评与自我批评
2014/02/12 职场文书
横幅标语大全
2014/06/17 职场文书
大学生村官工作总结2015
2015/04/09 职场文书
运动会主持人开幕词
2016/03/04 职场文书
React 高阶组件HOC用法归纳
2021/06/13 Javascript
Mysql排查分析慢sql之explain实战案例
2022/04/19 MySQL
oracle delete误删除表数据后如何恢复
2022/06/28 Oracle
vscode内网访问服务器的方法
2022/06/28 Servers