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的几种开发工具介绍
Mar 07 Python
python装饰器decorator介绍
Nov 21 Python
你应该知道的python列表去重方法
Jan 17 Python
十分钟利用Python制作属于你自己的个性logo
May 07 Python
解决django前后端分离csrf验证的问题
Feb 03 Python
python pandas时序处理相关功能详解
Jul 03 Python
python3 enum模块的应用实例详解
Aug 12 Python
Python中IP地址处理IPy模块的方法
Aug 16 Python
Anaconda+Pycharm环境下的PyTorch配置方法
Mar 13 Python
tensorflow2.0的函数签名与图结构(推荐)
Apr 28 Python
Python如何对XML 解析
Jun 28 Python
python使用scapy模块实现ARP扫描的过程
Jan 21 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_Flame(Version:Progress)的原代码
2006/10/09 PHP
yii2.0整合阿里云oss的示例代码
2017/09/19 PHP
PHP中单例模式的使用场景与使用方法讲解
2019/03/18 PHP
PHP连接SQL server数据库测试脚本运行实例
2020/08/24 PHP
asp批量修改记录的代码
2008/06/25 Javascript
锋利的jQuery 要点归纳(一) jQuery选择器
2010/03/21 Javascript
使用js在页面中绘制表格核心代码
2013/09/16 Javascript
JS简单计算器实例
2015/01/20 Javascript
详解javascript函数的参数
2015/11/10 Javascript
JS实现table表格数据排序功能(可支持动态数据+分页效果)
2016/05/26 Javascript
javascript设计模式之module(模块)模式
2016/08/19 Javascript
搭建Bootstrap离线文档的方法
2016/12/02 Javascript
Bootstrap实现提示框和弹出框效果
2017/01/11 Javascript
最实用的JS数组函数整理
2017/12/05 Javascript
微信小程序实现导航栏选项卡效果
2020/06/19 Javascript
React如何避免重渲染
2018/04/10 Javascript
浅谈js中的bind
2019/03/18 Javascript
JS实现选项卡效果的代码实例
2019/05/20 Javascript
Vue移动端实现图片上传及超过1M压缩上传
2019/12/23 Javascript
vue实现图书管理系统
2020/12/29 Vue.js
[02:46]完美世界DOTA2联赛PWL DAY4集锦
2020/11/03 DOTA
pydev使用wxpython找不到路径的解决方法
2013/02/10 Python
跟老齐学Python之关于类的初步认识
2014/10/11 Python
Python操作MongoDB数据库PyMongo库使用方法
2015/04/27 Python
python实现识别相似图片小结
2016/02/22 Python
python编程实现12306的一个小爬虫实例
2017/12/27 Python
对numpy中数组转置的求解以及向量内积计算方法
2018/10/31 Python
Python OpenCV中的resize()函数的使用
2019/06/20 Python
Django密码存储策略分析
2020/01/09 Python
解决pytorch 交叉熵损失输出为负数的问题
2020/07/07 Python
用C#语言写出在本地创建一个UDP接收端口的具体过程
2016/02/22 面试题
小学英语教学反思
2014/01/30 职场文书
实习评语大全
2014/04/26 职场文书
自主招生自荐信格式范文
2015/03/25 职场文书
为什么说餐饮很难做,是因为你不了解这些新规则
2019/08/20 职场文书
JMeter对MySQL数据库进行压力测试的实现步骤
2022/01/22 MySQL