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 31 Python
python操作ie登陆土豆网的方法
May 09 Python
详解Python中open()函数指定文件打开方式的用法
Jun 04 Python
在python的类中动态添加属性与生成对象
Sep 17 Python
Python如何读取MySQL数据库表数据
Mar 11 Python
Python中表达式x += y和x = x+y 的区别详解
Jun 20 Python
使用Python抓取豆瓣影评数据的方法
Oct 17 Python
pygame游戏之旅 创建游戏窗口界面
Nov 20 Python
python图像处理入门(一)
Apr 04 Python
Python图像处理PIL各模块详细介绍(推荐)
Jul 17 Python
Python操作Mongodb数据库的方法小结
Sep 10 Python
Python 使用 prettytable 库打印表格美化输出功能
Dec 26 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
dedecms模版制作使用方法
2007/04/03 PHP
php实现自动获取生成文章主题关键词功能的深入分析
2013/06/03 PHP
php实现MD5加密16位(不要默认的32位)
2013/08/12 PHP
php json_encode值中大括号与花括号区别
2013/09/30 PHP
thinkphp实现多语言功能(语言包)
2014/03/04 PHP
PHP实现定时执行任务的方法
2014/10/05 PHP
Linux系统中为php添加pcntl扩展
2016/08/28 PHP
php中二分法查找算法实例分析
2016/09/22 PHP
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之三
2012/01/03 Javascript
JS文本框追加多个下拉框的值的简单实例
2013/07/12 Javascript
jQuery使用fadeout实现元素渐隐效果的方法
2015/03/27 Javascript
javascript最基本的函数汇总
2015/06/25 Javascript
jQuery获取字符串中出现最多的数
2016/02/22 Javascript
jquery设置表单元素为不可用的简单代码
2016/07/04 Javascript
微信小程序 教程之注册页面
2016/10/17 Javascript
微信小程序中form 表单提交和取值实例详解
2017/04/20 Javascript
nodejs模块学习之connect解析
2017/07/05 NodeJs
vue2.0中vue-cli实现全选、单选计算总价格的实例代码
2017/07/18 Javascript
Vuejs 页面的区域化与组件封装的实现
2017/09/11 Javascript
JavaScript 中使用 Generator的方法
2017/12/29 Javascript
Django+Vue跨域环境配置详解
2018/07/06 Javascript
解决Angular4项目部署到服务器上刷新404的问题
2018/08/31 Javascript
又拍云 Node.js 实现文件上传、删除功能
2018/10/28 Javascript
JavaScript文本特效实例小结【3个示例】
2018/12/22 Javascript
如何封装了一个vue移动端下拉加载下一页数据的组件
2019/01/06 Javascript
python使用udp实现聊天器功能
2018/12/10 Python
Python如何给函数库增加日志功能
2020/08/04 Python
Python 如何实现数据库表结构同步
2020/09/29 Python
Python如何定义一个函数
2015/09/01 面试题
行政专员岗位职责
2014/01/02 职场文书
阅兵口号
2014/06/19 职场文书
2014年中秋节活动总结
2014/08/29 职场文书
未中标通知书
2015/04/17 职场文书
甲午风云观后感
2015/06/02 职场文书
优秀乡村医生事迹材料(2016精选版)
2016/02/29 职场文书
SQL Server中锁的用法
2022/05/20 SQL Server