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多线程学习资料
Dec 19 Python
Python中使用wxPython开发的一个简易笔记本程序实例
Feb 08 Python
Python2中的raw_input() 与 input()
Jun 12 Python
浅析Python中的多条件排序实现
Jun 07 Python
Python抓取手机号归属地信息示例代码
Nov 28 Python
Python使用numpy模块创建数组操作示例
Jun 20 Python
OpenCV-Python 摄像头实时检测人脸代码实例
Apr 30 Python
利用pytorch实现对CIFAR-10数据集的分类
Jan 14 Python
浅析pip安装第三方库及pycharm中导入第三方库的问题
Mar 10 Python
PyCharm 2020.2 安装详细教程
Sep 25 Python
基于CentOS搭建Python Django环境过程解析
Aug 24 Python
Python语法学习之进程的创建与常用方法详解
Apr 08 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
深入了解php4(2)--重访过去
2006/10/09 PHP
PHP生成不重复随机数的方法汇总
2014/11/19 PHP
推荐十款免费 WordPress 插件
2015/03/24 PHP
PHP函数shuffle()取数组若干个随机元素的方法分析
2016/04/02 PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
2016/07/01 PHP
PHP迭代器和迭代的实现与使用方法分析
2018/04/19 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
jQuery 判断页面元素是否存在的代码
2009/08/14 Javascript
JQuery SELECT单选模拟jQuery.select.js
2009/11/12 Javascript
清空上传控件input file的值
2010/07/03 Javascript
JQuery each()函数如何优化循环DOM结构的性能
2012/12/10 Javascript
Thinkphp模板没有解析直接原样输出的解决方法
2014/10/31 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单的实现代码
2016/06/23 Javascript
基于node.js express mvc轻量级框架实践
2017/09/14 Javascript
Angular弹出模态框的两种方式
2017/10/19 Javascript
Angular2仿照微信UI实现9张图片上传和预览的示例代码
2017/10/19 Javascript
JavaScript 日期时间选择器一些小结
2018/04/02 Javascript
JS解析后台返回的JSON格式数据实例
2018/08/06 Javascript
vue分页器组件编写方法详解
2019/06/28 Javascript
Windows上node.js的多版本管理工具用法实例分析
2019/11/06 Javascript
js函数柯里化的方法和作用实例分析
2020/04/11 Javascript
Windows安装Python、pip、easy_install的方法
2017/03/05 Python
python判断计算机是否有网络连接的实例
2018/12/15 Python
在python里从协程返回一个值的示例
2019/02/19 Python
python实现维吉尼亚加密法
2019/03/20 Python
Python实例方法、类方法、静态方法区别详解
2020/09/05 Python
CSS3五个技巧给你的网站带来出色的效果
2009/04/02 HTML / CSS
Lenox官网:精美的瓷器&独特的礼品
2017/02/12 全球购物
Gina Bacconi官网:吉娜贝康尼连衣裙和礼服
2018/04/24 全球购物
英国伦敦的睡衣品牌:Asceno
2019/10/06 全球购物
光声世纪笔试题目
2012/08/25 面试题
小学运动会表扬稿
2014/01/19 职场文书
2015年项目经理工作总结
2015/04/30 职场文书
2015年度残疾人工作总结
2015/05/14 职场文书
python 中的@运算符使用
2021/05/26 Python
win10如何更改appdata文件夹的默认位置?
2022/07/15 数码科技