python中global与nonlocal比较


Posted in Python onNovember 21, 2014

python引用变量的顺序: 当前作用域局部变量->外层作用域变量->当前模块中的全局变量->python内置变量

一、global

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

gcount = 0
def global_test():

    print (gcount)

    

def global_counter():

    global gcount

    gcount +=1

    return gcount

    

def global_counter_test():

    print(global_counter())

    print(global_counter())

    print(global_counter())

二、nonlocal

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())

也可以使用generator来实现类似的counter。如下:

def counter_generator():

    count = 0

    while True:

        count += 1

        yield count

    

def counter_generator_test():

  # below is for python 3.x and works well

  citer = counter_generator().__iter__()

  i = 0

  while(i < 3) : 

    print(citer.__next__())

    i+=1

  

def counter_generator_test2():  

  #below code don't work

  #because next() function still suspends and cannot exit

  #it seems the iterator is generated every time.

  j = 0

  for iter in counter_generator():

    while(j < 3) : 

      print(iter)

      j+=1
Python 相关文章推荐
Python中lambda的用法及其与def的区别解析
Jul 28 Python
深入理解Javascript中的this关键字
Mar 27 Python
python冒泡排序简单实现方法
Jul 09 Python
安装ElasticSearch搜索工具并配置Python驱动的方法
Dec 22 Python
python中根据字符串调用函数的实现方法
Jun 12 Python
解决python通过cx_Oracle模块连接Oracle乱码的问题
Oct 18 Python
详解安装mitmproxy以及遇到的坑和简单用法
Jan 21 Python
python 实现12bit灰度图像映射到8bit显示的方法
Jul 08 Python
详解Django3中直接添加Websockets方式
Feb 12 Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
May 11 Python
学python爬虫能做什么
Jul 29 Python
python如何使用腾讯云发送短信
Sep 17 Python
python装饰器decorator介绍
Nov 21 #Python
python多线程操作实例
Nov 21 #Python
Python中的闭包详细介绍和实例
Nov 21 #Python
Python多线程同步Lock、RLock、Semaphore、Event实例
Nov 21 #Python
python多进程操作实例
Nov 21 #Python
Python多进程通信Queue、Pipe、Value、Array实例
Nov 21 #Python
Python多进程同步Lock、Semaphore、Event实例
Nov 21 #Python
You might like
关于PHP堆栈与列队的学习
2013/06/21 PHP
windows下配置apache+php+mysql时出现问题的处理方法
2014/06/20 PHP
php实现网站留言板功能
2015/11/04 PHP
PHP+shell脚本操作Memcached和Apache Status的实例分享
2016/03/11 PHP
PHP基于XMLWriter操作xml的方法分析
2017/07/17 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
IE浏览器兼容Firefox的JS脚本的代码
2008/10/23 Javascript
通过length属性判断jquery对象是否存在
2013/10/18 Javascript
Android中的jQuery:AQuery简介
2014/05/06 Javascript
利用javascript实现全部删或清空所选的操作
2014/05/27 Javascript
解决jQuery上传插件Uploadify出现Http Error 302错误的方法
2015/12/18 Javascript
JavaScript实现弹出模态窗体并接受传值的方法
2016/02/12 Javascript
实例解析jQuery中proxy()函数的用法
2016/05/24 Javascript
JavaScript DOM节点操作方法总结
2016/08/23 Javascript
angular bootstrap timepicker TypeError提示怎么办
2017/06/13 Javascript
详解创建自定义的Angular Schematics
2018/06/06 Javascript
vue.js实现会动的简历(包含底部导航功能,编辑功能)
2019/04/08 Javascript
小程序接入腾讯位置服务的详细流程
2020/03/03 Javascript
python+selenium打印当前页面的titl和url方法
2018/06/22 Python
详解python的sorted函数对字典按key排序和按value排序
2018/08/10 Python
python矩阵的转置和逆转实例
2018/12/12 Python
Python中字符串String的基本内置函数与过滤字符模块函数的基本用法
2019/05/27 Python
详解Python图像处理库Pillow常用使用方法
2019/09/02 Python
python实现简单银行管理系统
2019/10/25 Python
Tensorflow中的dropout的使用方法
2020/03/13 Python
Python ORM框架Peewee用法详解
2020/04/29 Python
python+excel接口自动化获取token并作为请求参数进行传参操作
2020/11/10 Python
Waterford加拿大官方网站:世界著名的水晶杯品牌
2016/11/01 全球购物
俄罗斯的精英皮具:Wittchen
2018/01/29 全球购物
中专毕业生求职简历的自我评价
2013/10/21 职场文书
转让协议书范本
2014/04/15 职场文书
525心理活动总结
2014/07/04 职场文书
党校毕业心得体会
2014/09/13 职场文书
医德医风学习心得体会
2016/01/25 职场文书
CSS精灵图的原理与使用方法介绍
2022/03/17 HTML / CSS
python中mongodb包操作数据库
2022/04/19 Python