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爬虫入门教程之糗百图片爬虫代码分享
Sep 02 Python
python中pygame模块用法实例
Oct 09 Python
python如何在循环引用中管理内存
Mar 20 Python
对Python字符串中的换行符和制表符介绍
May 03 Python
python实现黑客字幕雨效果
Jun 21 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
Jul 09 Python
Python集合基本概念与相关操作实例分析
Oct 30 Python
python list数据等间隔抽取并新建list存储的例子
Nov 27 Python
tensorflow的计算图总结
Jan 12 Python
tensorflow实现残差网络方式(mnist数据集)
May 26 Python
PyCharm中如何直接使用Anaconda已安装的库
May 28 Python
python 实现一个图形界面的汇率计算器
Nov 09 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取整函数:ceil,floor,round,intval的区别详细解析
2013/08/31 PHP
让网页根据不同IE版本显示不同的内容
2009/02/08 Javascript
Prototype Array对象 学习
2009/07/19 Javascript
js页面滚动时层智能浮动定位实现(jQuery/MooTools)
2011/08/23 Javascript
JavaScript 反科里化 this [译]
2012/09/20 Javascript
javascript列表框操作函数集合汇总
2013/11/28 Javascript
流量统计器如何鉴别C#:WebBrowser中伪造referer
2015/01/07 Javascript
JavaScript动态添加列的方法
2015/03/25 Javascript
javascript仿百度输入框提示自动下拉补全
2016/01/07 Javascript
理解JavaScript表单的基础知识
2016/01/25 Javascript
js鼠标单击和双击事件冲突问题的快速解决方法
2016/07/11 Javascript
js实现千分符和保留几位小数的简单实例
2016/08/01 Javascript
JQuery遍历元素的父辈和祖先的方法
2016/09/18 Javascript
jquery popupDialog 使用 加载jsp页面的方法
2016/10/25 Javascript
JS动画实现回调地狱promise的实例代码详解
2018/11/08 Javascript
JS实现的贪吃蛇游戏完整实例
2019/01/18 Javascript
vue.js中使用echarts实现数据动态刷新功能
2019/04/16 Javascript
tracking.js实现前端人脸识别功能
2020/04/16 Javascript
合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友
2009/04/09 Python
python抓取网页图片示例(python爬虫)
2014/04/27 Python
Python连接PostgreSQL数据库的方法
2016/11/28 Python
Sanic框架Cookies操作示例
2018/07/17 Python
python+influxdb+shell编写区域网络状况表
2018/07/27 Python
对python中Librosa的mfcc步骤详解
2019/01/09 Python
python调用webservice接口的实现
2019/07/12 Python
Django项目使用CircleCI的方法示例
2019/07/14 Python
python关于矩阵重复赋值覆盖问题的解决方法
2019/07/19 Python
python实现npy格式文件转换为txt文件操作
2020/07/01 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
2020/12/13 Python
军训鉴定表自我鉴定
2014/02/13 职场文书
生物科学专业自荐书
2014/06/20 职场文书
医生爱岗敬业演讲稿
2014/08/26 职场文书
承兑汇票转让证明怎么写?
2014/11/30 职场文书
大学生助学金感谢信
2015/01/21 职场文书
2015年度村委会工作总结
2015/04/29 职场文书
原生JavaScript实现简单五子棋游戏
2021/06/28 Javascript