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 相关文章推荐
使用go和python递归删除.ds store文件的方法
Jan 22 Python
Python3读取UTF-8文件及统计文件行数的方法
May 22 Python
学习python 之编写简单乘法运算题
Feb 27 Python
python实现识别手写数字 python图像识别算法
Mar 23 Python
对numpy中二进制格式的数据存储与读取方法详解
Nov 01 Python
解决python3 pika之连接断开的问题
Dec 18 Python
python3 线性回归验证方法
Jul 09 Python
python脚本后台执行方式
Dec 21 Python
如何使用Python抓取网页tag操作
Feb 14 Python
pycharm开发一个简单界面和通用mvc模板(操作方法图解)
May 27 Python
python从PDF中提取数据的示例
Oct 30 Python
python自动统计zabbix系统监控覆盖率的示例代码
Apr 03 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程序员最常犯的11个MySQL错误小结
2010/11/20 PHP
php准确获取文件MIME类型的方法
2015/06/17 PHP
php pdo操作数据库示例
2017/03/10 PHP
PHP结合Redis+MySQL实现冷热数据交换应用案例详解
2019/07/09 PHP
php中Swoole的热更新实现代码实例
2021/03/04 PHP
JavaScript 获得选中文本内容的方法
2009/02/15 Javascript
JavaScript学习笔记(十)
2010/01/17 Javascript
jQuery实现原理的模拟代码 -6 代码下载
2010/08/16 Javascript
artdialog的图片/标题以及关闭按钮不显示的解决方法
2013/06/27 Javascript
js限制文本框只能输入数字方法小结
2014/06/16 Javascript
JS实现仿Windows经典风格的选项卡Tab切换代码
2015/10/20 Javascript
JS区分浏览器页面是刷新还是关闭
2016/04/17 Javascript
BootStrap Fileinput初始化时的一些参数
2016/12/30 Javascript
js中作用域的实例解析
2017/03/16 Javascript
jQuery实现点击关注和取消功能
2017/07/03 jQuery
MUI顶部选项卡的用法(tab-top-webview-main)详解
2017/10/08 Javascript
vue 左滑删除功能的示例代码
2019/01/28 Javascript
JavaScript实现烟花绽放动画效果
2020/08/04 Javascript
如何阻止移动端浏览器点击图片浏览
2020/08/29 Javascript
JS指定音频audio在某个时间点进行播放
2020/11/28 Javascript
JavaScript实现移动小精灵的案例代码
2020/12/12 Javascript
[02:18]DOTA2英雄基础教程 育母蜘蛛
2014/01/20 DOTA
python实现斐波那契递归函数的方法
2014/09/08 Python
Python 中开发pattern的string模板(template) 实例详解
2017/04/01 Python
python获取指定时间差的时间实例详解
2017/04/11 Python
python实现对输入的密文加密
2019/03/20 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
2019/08/02 Python
PyCharm2019安装教程及其使用(图文教程)
2019/09/29 Python
Python上下文管理器用法及实例解析
2019/11/11 Python
纯CSS3实现的阴影效果
2014/12/24 HTML / CSS
vivo智能手机官方商城:vivo
2016/09/22 全球购物
MVMT手表官方网站:时尚又实惠的高品质手表
2016/12/04 全球购物
综合实践活动方案
2014/02/14 职场文书
给老师的一封建议书
2014/03/13 职场文书
自愿离婚协议书范文2014
2014/10/12 职场文书
Vue自定义铃声提示音组件的实现
2022/01/22 Vue.js