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 opencv设置摄像头分辨率以及各个参数的方法
Apr 02 Python
对numpy中shape的深入理解
Jun 15 Python
老生常谈python中的重载
Nov 11 Python
Python3使用TCP编写一个简易的文件下载器功能
May 08 Python
Pycharm创建项目时如何自动添加头部信息
Nov 14 Python
Python多进程编程常用方法解析
Mar 26 Python
Python打印不合法的文件名
Jul 31 Python
Python并发爬虫常用实现方法解析
Nov 19 Python
python中Array和DataFrame相互转换的实例讲解
Feb 03 Python
Python爬虫数据的分类及json数据使用小结
Mar 29 Python
python实现A*寻路算法
Jun 13 Python
Python进程间的通信之语法学习
Apr 11 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
IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例(已经完成)
2006/12/06 PHP
thinkphp3查询mssql数据库乱码解决方法分享
2014/02/11 PHP
ECshop 迁移到 PHP7版本时遇到的兼容性问题
2016/02/15 PHP
Zend Framework教程之路由功能Zend_Controller_Router详解
2016/03/07 PHP
PHP简单实现文本计数器的方法
2016/04/28 PHP
PHP yield关键字功能与用法分析
2019/01/03 PHP
php校验公钥是否可用的实例方法
2019/09/17 PHP
ExtJs Excel导出并下载IIS服务器端遇到的问题
2011/09/16 Javascript
jQuery获得字体颜色16位码的方法
2016/02/20 Javascript
JavaScript学习笔记整理_简单实现枚举类型,扑克牌应用
2016/09/19 Javascript
微信小程序 动态的设置图片的高度和宽度详解及实例代码
2017/02/24 Javascript
D3.js进阶系列之CSV表格文件的读取详解
2017/06/06 Javascript
JS点击图片弹出文件选择框并覆盖原图功能的实现代码
2017/08/25 Javascript
js replace 全局替换的操作方法
2018/06/12 Javascript
js+html5实现手机九宫格密码解锁功能
2018/07/30 Javascript
vue-cli3.0实现一个多页面应用的历奇经历记录总结
2020/03/16 Javascript
javascript设计模式 ? 模板方法模式原理与用法实例分析
2020/04/23 Javascript
谈谈JavaScript中的函数
2020/09/08 Javascript
js实现点击烟花特效
2020/10/14 Javascript
详解Java中String JSONObject JSONArray List转换
2020/11/13 Javascript
python分布式环境下的限流器的示例
2017/10/26 Python
Python实现Pig Latin小游戏实例代码
2018/02/02 Python
Python反转序列的方法实例分析
2018/03/21 Python
python将四元数变换为旋转矩阵的实例
2019/12/04 Python
CSS3教程(5):网页背景图片
2009/04/02 HTML / CSS
全世界最美丽的四星和五星级酒店预订:Prestigia.com
2017/11/15 全球购物
eBay奥地利站:eBay.at
2019/07/24 全球购物
寒假思想汇报
2014/01/10 职场文书
2014年幼儿园植树节活动方案
2014/03/02 职场文书
道德模范事迹材料
2014/12/20 职场文书
庐山导游词
2015/02/03 职场文书
团组织推荐意见
2015/06/05 职场文书
运动会通讯稿100字
2015/07/20 职场文书
银行服务理念口号
2015/12/25 职场文书
为什么node.js不适合大型项目
2021/04/28 Javascript
Python3接口性能测试实例代码
2021/06/20 Python