一、关键字

golbal nonlocal

在局部修改全局的变量为什么会报错

count = 0def func():count += 1
func()
# UnboundLocalError: local variable 'count' referenced before assignment
# 解释器认为:如果你在局部作用域对一个变量进行修改了,你在局部作用域已经定义好这个变量了。

解释器认为: 如果你在局部作用域对一个变量进行修改,name你在局部作用域已经定义好这个变量了。

1. global (***)

用途

  • 可以在局部作用域申明一个全局变量

例题

def func():global name # 用法name = 'alex'print(locals())
func()# 总结
# 申明一个变量的方法:global name
  • 可以在局部修改一个全局变量

例题

count = 0def func():global countcount += 1print(count)
func()
print(count)# 输出结果
0
1总结:
# 程序从上往下执行,先定义一个局部变量count = 0,然后往下执行,到print(count),这时候count指向的还是0,到func()也就是变量名加括号,开始执行定义函数,进入函数内部,声明count为全局变量,然后对count进行修改+1,跳出函数执行print(count),这个时候count已经+1操作,结果是1

2. nonlocal (了解)

用途

  • nonlocal不能操作全局变量
  • nonlocal 可以对父级作用域的变量进行修改,并且在当前作用域创建

例题

def func():count = 0def inner():nonlocal countcount += 1print(count)print(locals())inner()print(locals())
func()# UnboundLocalError: local variable 'count' referenced before assignment# 在没有申明一个nolocal的情况下,定义函数在子局部对父局部的变量进行修改也会报错,原因如下:
# 解释器认为:如果你在局部作用域对一个变量进行修改了,
# 你在局部作用域已经定义好这个变量了。

一句话总结

全局有count = 0 这个变量,或者在函数内部申明一个global count,此时在局部才可以对全局变量进行修改

# 正确的操作方法
count = 0
def func():global countcount += 1return count
print(func())

转载于:https://www.cnblogs.com/zanao/p/11054572.html

python之golbal/nonlocal相关推荐

  1. python global和nonlocal用法解析

    这篇文章主要介绍了python global和nonlocal用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 global和nonlocal ...

  2. python闭包技巧_案例详析:Python闭包与nonlocal关键字

    在廖雪峰的官网上看到一个很有意思题目.关于闭包的,有兴趣的朋友可以看一下, 做一下这个题目,当然需要一点闭包的知识. 下面我简述一下: 利用闭包返回一个计数器函数,每次调用它返回递增整数. # 修改下 ...

  3. Python笔记之nonlocal语句

    nonlocal语句 nonlocal语句和global是近亲.它和global的不同之处在于,nonlocal应用于一个嵌套的函数的作用域中修改名称,而不是所有def之外的全局模块作用域:而且在声明 ...

  4. python nonlocal的用法_python global和nonlocal用法解析

    这篇文章主要介绍了python global和nonlocal用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 ◆global和nonloca ...

  5. python global和nonlocal_python global和nonlocal用法解析

    python global和nonlocal用法解析 这篇文章主要介绍了python global和nonlocal用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值 ...

  6. python中nonlocal是什么意思_Python中关键字nonlocal和global的声明与解析

    请问Python3的关键字有哪些 python一共有35个关键字,在python37版本,新添加了async和await,可以通过import keyword借用keyword模块中的kwlist方法 ...

  7. lambda不是python的保留字_python-nonlocal关键字的使用,lambda表达式(学习到function到变...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Python中的nonlocal关键字的使用,lambda表达式,什么是递归,字符串操作方法 总的来说: golbal 全局变量 nonlocal 代表( ...

  8. Python基本语法_变量作用域LEGB

    目录 目录 软件系统 变量的作用域 高级语言对数据类型的使用过程 作用域的产生 作用域的类型 Llocal局部作用域 Eenclosing嵌套作用域 Gglobal全局作用域 Bbuilt-in内置作 ...

  9. python入门之函数调用第二关_猪行天下之Python基础——5.1 函数(上)

    内容简述: 1.函数定义 2.形参与实参 3.关键字参数与默认参数 4.可变参数 5.全局变量与局部变量 6.内部函数 7.闭包 8.lambda表达式 9.递归 1.函数定义 我们可以将一些实现特定 ...

最新文章

  1. Spring boot定时任务(Scheduling Tasks)
  2. 《Access 2007开发指南(修订版)》一一1.3 具有缩放能力的Access
  3. 34.35.热图(heatmap)、创建带注释的热图、使用辅助函数的代码样式、图像显示、图像插值、将图像数据导入Numpy数组、将numpy数组绘制为图像
  4. oracle 等频直方图,等频直方图预估结果集行计算公式
  5. 利用python将txt文件中的内容写入Excel文件中
  6. 常见八种安卓开发报错的方式
  7. (原创) 电源滤波为何要用几个不同量级的电容并联?
  8. 的write方法有哪些参数_向子进程传递大量数据的方法
  9. 对互联网海量数据实时计算的理解
  10. 科来网络分析系统与数据包分析
  11. 化工企业ERP建设中设备管理的重要性
  12. js对象定义的3种方法
  13. LynxFly科研小四轴横空出世,开源,F4,WIFI
  14. php公众号多域名授权,多个网站用一个微信公众号授权域名的坑
  15. 采样频率和带宽的关系_磁共振成像带宽
  16. 赛季更新服务器维修,12月30日第一赛季结束 夺神之权服务器停机维护公告
  17. Li‘s 核磁共振影像数据处理-19-FSL界面可视化操作介绍
  18. python卡尔曼滤波室内定位_基于Unscented卡尔曼滤波的室内定位
  19. MISO和MOSI是什么意思
  20. 小白学爬虫---爬取中国房价工资比

热门文章

  1. 最新检讨书生成工具小程序源码+支持流量主
  2. 唉,都是摄像头惹的祸 :-(
  3. Task06|连接|joyfulpandas|组队学习 2022.8月组队学习
  4. retrace 解析混淆代码
  5. iOS 定位的时候没有出显弹框选择
  6. UART通信程序-中断方式
  7. Laravel 模版集成与包含以及引用
  8. Lammps 如何计算速度矢量分布?
  9. echarts3.0--地图和其点击事件及地图内文字内容样式位置控制
  10. 本地系统linux/ubuntu/服务器文件创建url下载链接