python引用变量的顺序: 当前作用域局部变量->外层作用域变量->当前模块中的全局变量->python内置变量 。
global
一、在局部如果声明全局变量,可以对全局变量修改,否则不行
gcount = 0
def global_test():
....global gcount
....gcount+=1
....print (gcount)
global_test()
正确输出 1
————————————————————————————
gcount = 0
def global_test():
....gcount+=1
....print (gcount)
global_test()
UnboundLocalError: local variable 'gcount' referenced before assignment
如果函数内要对全局变量修改,需要使用关键字global
二、 在局部如果不声明全局变量,并且不修改全局变量。则可以正常使用全局变量:
gcount = 0
def global_test():
....print (gcount)
global_test()
如果在局部不修改全局变量,程序正确输出 0
三、nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量。
def make_counter():
....count = 0
....def counter():
........nonlocal count #使用外层的count变量
........count += 1
........return count
........return counter

def make_counter_test():
....mc = make_counter()
....print(mc())
....print(mc())
....print(mc())

make_counter_test()
输出:

1

2

3

转载于:https://blog.51cto.com/13587169/2112424

python中global 和 nonlocal 的作用域相关推荐

  1. python中global和nonlocal用法的详细说明

    1.前言 第一,两者的功能不同.global关键字修饰变量后标识该变量是全局变量,对该变量进行修改就是修改全局变量,而nonlocal关键字修饰变量后标识该变量是上一级函数中的局部变量,如果上一级函数 ...

  2. python中global和def_Python中 Global和Nonlocal的用法详解

    nonlocal 和 global 也很容易混淆.简单记录下自己的理解. 解释 global 总之一句话,作用域是全局的,就是会修改这个变量对应地址的值. global 语句是一个声明,它适用于整个当 ...

  3. Python关键字 global与nonlocal

    Python关键字 global与nonlocal global def test():#1函数内如果没定义x,则x默认为全局变量print(x) # 输出 global v#2函数内如果定义x,则x ...

  4. Python中global和nolocal作用域的理解

    原创:https://www.cnblogs.com/z360519549/p/5172020.html python引用变量的顺序: 当前作用域局部变量-> 闭包函数外的函数中变量->当 ...

  5. 深入解析Python中函数的参数与作用域

    传递参数 函数传递参数时的一些简要的关键点: 参数的传递是通过自动将对象赋值给本地变量名来实现的.所有的参数实际上都是通过指针进行传递的,作为参数被传递的对象从来不自动拷贝. 对于numbers,St ...

  6. python中global的用法

    python变量的作用域: Local 局部作用域 Enclosing 闭包函数外的函数中 Global全局作用域 查找规则:以Local->Enclosing ->Global规则查找, ...

  7. python中global的使用_PYTHON中使用GLOBAL引发的一系列问题

    In [96]: def x(): b = 12 def y(): global a,b a = 1 b = 2 y() print "b =",b ....: In [97]: ...

  8. python中global什么意思_python中的global关键字的使用方法

    摘要 global 标志实际上是为了提示 python 解释器,表明被其修饰的变量是全局变量.这样解释器就可以从当前空间 (current scope) 中读写相应变量了. Python 的全局变量是 ...

  9. python中global的意思_python中global是什么意思?

    上篇小编介绍了python中locals函数的作用(https://www.py.cn/jishu/jichu/22264.html),它可以更新并以字典形式返回当前全部局部变量,python中另一个 ...

最新文章

  1. 中职计算机应用基础每章知识点,[定稿]中职计算机应用基础教案_1-5章V3.1
  2. 爬虫9-淘宝商品信息定向爬虫
  3. python【Matlibplot绘图库】曲线样式的两种设置方式(看不懂你来打我)
  4. 最后两周!60万奖金AI攻防赛进入冲刺(附baseline代码及实操)
  5. Elasticsearch搜索引擎:ES的segment段合并原理
  6. 带有帐号密码验证的apche服务器文件下载
  7. collections 模块:更多数据结构
  8. opatch java.lang.OutOfMemoryError:Java heap space错误一例
  9. 高位在前低位在后是啥意思_两年前满仓买的一支股,买时28,现在8块多点,股民怎么处理好?...
  10. 人工智能为什么要从本科生抓起?
  11. 【转】JAVA成长之路
  12. 拓端tecdat|matlab递归神经网络RNN实现:桨距控制控制风力发电机组研究
  13. 数据库的点数据根据行政区shp来进行行政区处理,python定时器实现
  14. 【免费】前端设计师必须知晓的网站(1)
  15. 精准测分:基于函数调用关系链的用例消振算法(上帝视角)
  16. sublime常用主题---
  17. Suspending console(s) (use no_console_suspend to debug) android4.0 OMAP4460
  18. vue如何制作自定义表单校验样式
  19. SendGrid之WebHook的使用【Java】
  20. android无法接收短信广播,Android BroadcastReceiver接收收到短信的广播

热门文章

  1. 均匀白噪声的定义及特点_噪声的物理本质是什么?
  2. 没有运行 spring_Spring事务的传播行为案例分析
  3. linux 7 pxe,CentOS 7.6 PXE方式安装和配置
  4. a73*2+a53*2指的是什么_什么言四字词
  5. python二进制文件的读取与写入可以分别使用什么方法_用python实现读写文件常见操作方式...
  6. python两个数相加时_两数相加 leetcode Python
  7. aspose 换行写_aspose.word 换行符 aspose.words换行符
  8. amp 调用链_调用链选型之Zipkin,Pinpoint,SkyWalking,CAT
  9. HTML基础-张晨光-专题视频课程
  10. 跟着迪哥学python 经管之家_跟着迪哥学Python数据分析与机器学习实战