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基础教程之获取本机ip数据包示例
Feb 10 Python
在Mac OS上搭建Python的开发环境
Dec 24 Python
详解Python中的文件操作
Aug 28 Python
Python设计模式之解释器模式原理与用法实例分析
Jan 10 Python
python中break、continue 、exit() 、pass终止循环的区别详解
Jul 08 Python
Python中的 sort 和 sorted的用法与区别
Aug 10 Python
django之自定义软删除Model的方法
Aug 14 Python
给大家整理了19个pythonic的编程习惯(小结)
Sep 25 Python
python argparser的具体使用
Nov 10 Python
python实现while循环打印星星的四种形状
Nov 23 Python
pytorch 实现删除tensor中的指定行列
Jan 13 Python
Opencv 图片的OCR识别的实战示例
Mar 02 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
新52大事件
2020/03/03 欧美动漫
打开超链需要“确认”对话框的方法
2007/03/08 Javascript
javascript 新浪背投广告实现代码
2009/07/07 Javascript
JavaScript 精粹读书笔记(1,2)
2010/02/07 Javascript
Fixie.js 自动填充内容的插件
2012/06/28 Javascript
jQuery easyui datagrid动态查询数据实例讲解
2013/02/26 Javascript
jQuery之ajax技术的详细介绍
2013/06/19 Javascript
js 获取、清空input type=&quot;file&quot;的值(示例代码)
2013/12/24 Javascript
手机号码,密码正则验证
2014/09/04 Javascript
jQuery 插件开发指南
2014/11/14 Javascript
jQuery中$(function() {});问题详解
2015/08/10 Javascript
原生javascript实现解析XML文档与字符串
2016/03/01 Javascript
jQuery EasyUI tree 使用拖拽时遇到的错误小结
2016/10/10 Javascript
浅谈jquery选择器 :first与:first-child的区别
2016/11/20 Javascript
基于javascript实现按圆形排列DIV元素(二)
2016/12/02 Javascript
详解react native页面间传递数据的几种方式
2018/11/07 Javascript
vue+Vue Router多级侧导航切换路由(页面)的实现代码
2018/12/20 Javascript
解决vue cli使用typescript后打包巨慢的问题
2019/09/30 Javascript
vue iview实现动态新增和删除
2020/06/17 Javascript
Jquery如何使用animation动画效果改变背景色的代码
2020/07/20 jQuery
electron踩坑之remote of undefined的解决
2020/10/06 Javascript
利用Python绘制MySQL数据图实现数据可视化
2015/03/30 Python
python相似模块用例
2016/03/04 Python
Python实现 版本号对比功能的实例代码
2019/04/18 Python
python程序快速缩进多行代码方法总结
2019/06/23 Python
使用Python轻松完成垃圾分类(基于图像识别)
2019/07/09 Python
利用Python中的Xpath实现一个在线汇率转换器
2020/09/09 Python
使用Python+Appuim 清理微信的方法
2021/01/26 Python
Under Armour安德玛法国官网:美国高端运动科技品牌
2018/06/29 全球购物
2014最新党员违纪检讨书
2014/10/12 职场文书
实习单位证明范例
2014/11/17 职场文书
新员工入职欢迎词
2015/01/23 职场文书
三方协议书
2015/01/27 职场文书
2015年纪委工作总结
2015/05/13 职场文书
2021年国漫热度排行前十,完美世界上榜,第四是美国动画作品
2022/03/18 国漫
nginx刷新页面出现404解决方案(亲测有效)
2022/03/18 Servers