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使用PyFetion来发送短信的例子
Apr 22 Python
Python中http请求方法库汇总
Jan 06 Python
django foreignkey(外键)的实现
Jul 29 Python
Python字典的概念及常见应用实例详解
Oct 30 Python
python 实现单通道转3通道
Dec 03 Python
jupyter notebook清除输出方式
Apr 10 Python
查看已安装tensorflow版本的方法示例
Apr 19 Python
pycharm 对代码做静态检查操作
Jun 09 Python
Python Django搭建网站流程图解
Jun 13 Python
浅析Python中字符串的intern机制
Oct 03 Python
详解Python类和对象内容
Jun 22 Python
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
Apr 21 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/08/26 PHP
浅析application/x-www-form-urlencoded和multipart/form-data的区别
2014/06/22 PHP
使用YII2框架实现微信公众号中表单提交功能
2017/09/04 PHP
浅谈使用 Yii2 AssetBundle 中 $publishOptions 的正确姿势
2017/11/08 PHP
JS无限极树形菜单,json格式、数组格式通用示例
2013/07/30 Javascript
js借助ActiveXObject实现创建文件
2013/09/29 Javascript
Jquery 返回json数据在IE浏览器中提示下载的问题
2014/05/18 Javascript
confirm的用法示例用于按钮操作时确定是否执行
2014/06/19 Javascript
Nodejs中自定义事件实例
2014/06/20 NodeJs
理解javascript定时器中的单线程
2016/02/23 Javascript
浅析jQuery中使用$所引发的问题
2016/05/29 Javascript
JS实现控制图片显示大小的方法【图片等比例缩放功能】
2017/02/18 Javascript
jQuery插件zTree实现获取一级节点数据的方法
2017/03/08 Javascript
Javascript实现从小到大的数组转换成二叉搜索树
2017/06/13 Javascript
浅析Vue 生命周期
2018/06/21 Javascript
微信小程序 JS动态修改样式的实现方法
2018/12/16 Javascript
Django+Vue实现WebSocket连接的示例代码
2019/05/28 Javascript
教你30秒发布一个TypeScript包到NPM的方法步骤
2019/07/22 Javascript
原生javascript的ajax请求及后台PHP响应操作示例
2020/02/24 Javascript
python实现电子词典
2020/04/23 Python
python实现连接mongodb的方法
2015/05/08 Python
在Python中操作时间之tzset()方法的使用教程
2015/05/22 Python
Python+selenium实现截图图片并保存截取的图片
2018/01/05 Python
Django rest framework基本介绍与代码示例
2018/01/26 Python
Python堆排序原理与实现方法详解
2018/05/11 Python
Python创建字典的八种方式
2019/02/27 Python
Python3.5多进程原理与用法实例分析
2019/04/05 Python
Python定时从Mysql提取数据存入Redis的实现
2020/05/03 Python
html5 自定义播放器核心代码
2013/12/20 HTML / CSS
俄罗斯第一家多品牌在线奢侈品精品店:Aizel.ru
2020/09/06 全球购物
资深财务管理人员自我评价
2013/09/22 职场文书
幼儿园元旦亲子活动方案
2014/02/17 职场文书
关于运动会的口号
2014/06/07 职场文书
中秋节活动总结
2014/08/29 职场文书
2014年高三班主任工作总结
2014/12/05 职场文书
酒店工程部岗位职责
2015/02/12 职场文书