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爬虫之抓取百度贴吧并存储到本地txt文件改进版
Nov 06 Python
python3简单实现微信爬虫
Apr 09 Python
Python3中_(下划线)和__(双下划线)的用途和区别
Apr 26 Python
一行python实现树形结构的方法
Aug 09 Python
Python 实现敏感目录扫描的示例代码
May 21 Python
使用opencv识别图像红色区域,并输出红色区域中心点坐标
Jun 02 Python
python的help函数如何使用
Jun 11 Python
浅谈sklearn中predict与predict_proba区别
Jun 28 Python
Django def clean()函数对表单中的数据进行验证操作
Jul 09 Python
Python3+Flask安装使用教程详解
Feb 16 Python
安装不同版本的tensorflow与models方法实现
Feb 20 Python
python模拟浏览器 使用selenium进入好友QQ空间并留言
Apr 12 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 正则表达式小结
2009/08/31 PHP
深入理解:XML与对象的序列化与反序列化
2013/06/08 PHP
学习php过程中的一些注意点的总结
2013/10/25 PHP
php中文验证码实现示例分享
2014/01/12 PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
2015/03/25 PHP
用JS实现的一个include函数
2007/07/21 Javascript
dwr spring的集成实现代码
2009/03/22 Javascript
jQuery实现可收缩展开的级联菜单实例代码
2013/11/27 Javascript
Jquery解析json数据详解
2013/12/26 Javascript
动态加载脚本提升javascript性能
2014/02/24 Javascript
用javascript将数据导入Excel示例代码
2014/09/10 Javascript
Javascript中使用A标签获取当前目录的绝对路径方法
2015/03/02 Javascript
javascript结合Flexbox简单实现滑动拼图游戏
2016/02/18 Javascript
Bootstrap基本插件学习笔记之轮播幻灯片(23)
2016/12/08 Javascript
微信小程序 表单Form实例详解(附源码)
2016/12/22 Javascript
Angular2管道Pipe及自定义管道格式数据用法实例分析
2017/11/29 Javascript
Node.js readline 逐行读取、写入文件内容的示例
2018/03/01 Javascript
Vue+webpack+Element 兼容问题总结(小结)
2018/08/16 Javascript
Vue中插入HTML代码的方法
2018/09/21 Javascript
[01:56]2014DOTA2西雅图邀请赛 MVP外卡赛老队长精辟点评
2014/07/09 DOTA
python实现根据窗口标题调用窗口的方法
2015/03/13 Python
基于python yield机制的异步操作同步化编程模型
2016/03/18 Python
Python实现将数据库一键导出为Excel表格的实例
2016/12/30 Python
Python面向对象程序设计之类和对象、实例变量、类变量用法分析
2020/03/23 Python
python3 sleep 延时秒 毫秒实例
2020/05/04 Python
Python批量删除mysql中千万级大量数据的脚本分享
2020/12/03 Python
HTML5 新表单类型示例代码
2018/03/20 HTML / CSS
乔丹诺(Giordano)酒庄德国官网:找到最好的意大利葡萄酒
2017/12/28 全球购物
瑞士灯具购物网站:Lampenwelt.ch
2018/07/08 全球购物
英国大码女性时装零售商:Evans
2018/08/29 全球购物
俄罗斯香水和化妆品在线商店:Aroma-butik
2020/02/28 全球购物
Java TransactionAPI (JTA) 主要包含几部分
2012/12/07 面试题
应届毕业生自荐信
2014/05/28 职场文书
2015年乡镇发展党员工作总结
2015/03/31 职场文书
《蜜蜂引路》教学反思
2016/02/22 职场文书
SpringBoot详解执行过程
2022/07/15 Java/Android