python_global和nonlocal用法

转载:
python中global和nonlocal用法的详细说明

#global关键字用来在函数或其他局部作用域中使用全局变量。但是如果不修改全局变量也可以不使用global关键字

gcount = 0
def global_test():
    gcount+=1
    print (gcount)
global_test()
#以上代码会报错:第一行定义了全局变量,在内部函数中又对外部函数进行了引用并修改,那么python会认为它是一个局部变量,有因为内部函数没有对其gcount进行定义和赋值,所以报错



#如果局部要对全局变量修改,则在局部声明该全局变量
gcount = 0 
def global_test():
    global  gcount
    gcount+=1
    print (gcount)
global_test()

#nonlocal声明的变量不是局部变量,也不是全局变量,而是外部嵌套函数内的变量
def make_counter():
    count = 0
    def counter():
        nonlocal 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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 人生苦短我用 Python 注:最后附电子书地址 一、Pythonic Thinking 第1条: 确认自己所用的...
    molscar阅读 2,094评论 0 3
  • 第5章 函数和函数式编程 5.1 引言函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数...
    VIVAFT阅读 1,004评论 0 5
  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,668评论 1 118
  • 这篇笔记记录的知识点:函数的基本概念自定义函数函数的几种参数 编程的三种方式:1.OOP 面向对象编程,万物皆对象...
    古月半半阅读 998评论 0 2
  • 朋友,您,经历过病痛的折磨吗?您,目睹过失去健康的痛苦吗? 我经历过,也目睹过。清晰记得两年前,我...
    大海7288阅读 630评论 0 1