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中获取网页状态码的两个方法
Nov 03 Python
Zabbix实现微信报警功能
Oct 09 Python
对python条件表达式的四种实现方法小结
Jan 30 Python
django中账号密码验证登陆功能的实现方法
Jul 15 Python
python gdal安装与简单使用
Aug 01 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
Nov 15 Python
Pytorch 搭建分类回归神经网络并用GPU进行加速的例子
Jan 09 Python
Python数组并集交集补集代码实例
Feb 18 Python
Python生成并下载文件后端代码实例
Aug 31 Python
python用Configobj模块读取配置文件
Sep 26 Python
selenium+headless chrome爬虫的实现示例
Jan 08 Python
浅谈python中的多态
Jun 15 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对csv文件的读取,写入,输出下载操作详解
2013/08/10 PHP
PHP迭代器实现斐波纳契数列的函数
2013/11/12 PHP
php更新mysql后获取改变行数的方法
2014/12/25 PHP
PHP5.5基于mysqli连接MySQL数据库和读取数据操作实例详解
2019/02/16 PHP
php使用pecl方式安装扩展操作示例
2019/08/12 PHP
php设计模式之单例模式用法经典示例分析
2019/09/20 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
2019/12/18 PHP
phpmyadmin在宝塔面板里进不去的解决方案
2020/07/06 PHP
jQuery生成asp.net服务器控件的代码
2010/02/04 Javascript
js获得指定控件输入光标的坐标兼容IE,Chrome,火狐等多种主流浏览器
2013/05/21 Javascript
浅析JavaScript中的类型和对象
2013/11/29 Javascript
jQuery 中$(this).index与$.each的使用指南
2014/11/20 Javascript
jQuery检测鼠标左键和右键点击的方法
2015/03/17 Javascript
javascript+HTML5的canvas实现七夕情人节3D玫瑰花效果代码
2015/08/04 Javascript
JS正则表达式修饰符global(/g)用法分析
2016/12/27 Javascript
javascript中的深复制详解及实例分析
2016/12/29 Javascript
Angular.js中下拉框实现渲染html的方法
2017/06/18 Javascript
详解Webpack+Babel+React开发环境的搭建的方法步骤
2018/01/09 Javascript
红黑树的插入详解及Javascript实现方法示例
2018/03/26 Javascript
详解一次Vue低版本安卓白屏问题的解决过程
2019/05/30 Javascript
原生js实现弹窗消息动画
2020/11/20 Javascript
js实现随机点名
2021/01/19 Javascript
自己使用总结Python程序代码片段
2015/06/02 Python
python中map()与zip()操作方法
2016/02/27 Python
python3.5使用tkinter制作记事本
2016/06/20 Python
聊聊Python中的pypy
2018/01/12 Python
python3.6环境安装+pip环境配置教程图文详解
2019/06/20 Python
python导入pandas具体步骤方法
2019/06/23 Python
Python二进制文件读取并转换为浮点数详解
2019/06/25 Python
Python和Bash结合在一起的方法
2020/11/13 Python
HTML5实现动画效果的方式汇总
2016/02/29 HTML / CSS
电焊工岗位职责
2014/03/06 职场文书
爱国卫生月活动总结范文
2014/04/25 职场文书
优秀语文教师事迹
2014/05/18 职场文书
希特勒的演讲稿
2014/05/23 职场文书
小学教师岗位职责
2015/04/02 职场文书