python全局变量引用与修改过程解析


Posted in Python onJanuary 07, 2020

这篇文章主要介绍了python全局变量引用与修改过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

一、引用

使用到的全局变量只是作为引用,不在函数中修改它的值的话,不需要加global关键字。如:

#! /usr/bin/python

a = 1
b = [2, 3]

def func():
  if a == 1:
    print("a: %d" %a)
  for i in range(4):
    if i in b:
      print("%d in list b" %i)
    else:
      print("%d not in list b" %i)
if __name__ == '__main__':
  func()

输出结果:

python全局变量引用与修改过程解析

可以看出,无论是列表还是变量,都是可以直接引用的。

二、修改

使用到的全局变量,需要在函数中修改的话,就涉及到歧义问题,如:

#! /usr/bin/python
a = 1
b = [2, 3]

def func():
  a = 2
  print "in func a:", a
  b[0] = 1
  print "in func b:", b

if __name__ == '__main__':
  print "before func a:", a
  print "before func b:", b
  func()
  print "after func a:", a
  print "after func b:", b

输出结果:

python全局变量引用与修改过程解析

可以看出,对于变量a,在函数func中"a = 2",因为存在既可以表示引用全局变量a,也可以表示创建一个新的局部变量的歧义,所以python默认指定创建一个新的局部变量来消除这一歧义,但对于列表b而言,"b[0] = 1"不存在这种歧义,因此直接修改了全局变量,但是如果改成了"b = [3, 4]",那么b也会变成局部变量。特别地,当在func中a = 2之前加入"if a == 1:"这一语句,脚本运行出错,因为这一语句引入了全局变量,导致了"a = 1"这一语句无法创建同名的局部变量。

因此,需要修改全局变量a,可以在"a = 2"之前加入global a声明,如:

#! /usr/bin/python

a = 1
b = [2, 3]

def func():
  global a
  a = 2
  print "in func a:", a
  b[0] = 1
  print "in func b:", b

if __name__ == '__main__':
  print "before func a:", a
  print "before func b:", b
  func()
  print "after func a:", a
  print "after func b:", b

输出结果:

python全局变量引用与修改过程解析

结论:引用全局变量,不需要golbal声明,修改全局变量,需要使用global声明,特别地,列表、字典等如果只是修改其中元素的值,可以直接使用全局变量,不需要global声明。结论:引用全局变量,不需要golbal声明,修改全局变量,需要使用global声明,特别地,列表、字典等如果只是修改其中元素的值,可以直接使用全局变量,不需要global声明。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python爬取读者并制作成PDF
Mar 10 Python
python实现的jpg格式图片修复代码
Apr 21 Python
使用Python的Tornado框架实现一个Web端图书展示页面
Jul 11 Python
python实现朴素贝叶斯算法
Nov 19 Python
Python定义函数时参数有默认值问题解决
Dec 19 Python
python读取mysql数据绘制条形图
Mar 25 Python
django 获取字段最大值,最新的记录操作
Aug 09 Python
python对批量WAV音频进行等长分割的方法实现
Sep 25 Python
关于python中导入文件到list的问题
Oct 31 Python
如何基于Python爬虫爬取美团酒店信息
Nov 03 Python
Python爬虫之爬取二手房信息
Apr 27 Python
使用Python脚本对GiteePages进行一键部署的使用说明
May 27 Python
python__new__内置静态方法使用解析
Jan 07 #Python
Python常用模块sys,os,time,random功能与用法实例分析
Jan 07 #Python
python单例设计模式实现解析
Jan 07 #Python
Python字典生成式、集合生成式、生成器用法实例分析
Jan 07 #Python
linux环境下安装python虚拟环境及注意事项
Jan 07 #Python
Python包,__init__.py功能与用法分析
Jan 07 #Python
Python3实现发送邮件和发送短信验证码功能
Jan 07 #Python
You might like
?生?D片??C字串
2006/12/06 PHP
php db类库进行数据库操作
2009/03/19 PHP
PHP Error与Logging函数的深入理解
2013/06/03 PHP
ThinkPHP3.1的Widget新用法
2014/06/19 PHP
PHP基于phpqrcode生成带LOGO图像的二维码实例
2015/07/10 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
2017/01/24 PHP
js 纯数字不重复排列的另类方法
2010/07/17 Javascript
TBCompressor js代码压缩
2011/01/05 Javascript
javascript中parentNode,childNodes,children的应用详解
2013/12/17 Javascript
Js获取下拉框选定项的值和文本的实现代码
2014/02/26 Javascript
jQuery+PHP打造滑动开关效果
2014/12/16 Javascript
jquery渐隐渐显的图片幻灯闪烁切换实现方法
2015/02/26 Javascript
jQuery实现弹出窗口中切换登录与注册表单
2015/06/05 Javascript
jQuery position() 函数详解以及jQuery中position函数的应用
2015/12/14 Javascript
Bootstrap每天必学之弹出框(Popover)插件
2016/04/25 Javascript
Nodejs中解决cluster模块的多进程如何共享数据问题
2016/11/10 NodeJs
jQuery实现数字自动增加或者减少的动画效果示例
2018/12/11 jQuery
浅谈JavaScript 代码简洁之道
2019/01/09 Javascript
详解vue-cli3多页应用改造
2019/06/04 Javascript
详解基于原生JS验证表单组件xy-form
2019/08/20 Javascript
VUE实时监听元素距离顶部高度的操作
2020/07/29 Javascript
python实现视频读取和转化图片
2019/12/10 Python
使用Python测试Ping主机IP和某端口是否开放的实例
2019/12/17 Python
UNOde50美国官网:西班牙珠宝品牌
2020/08/15 全球购物
如何启动时不需输入用户名与密码
2014/05/09 面试题
酒店服务实习自我鉴定
2013/09/22 职场文书
急诊科护士自我鉴定
2013/10/14 职场文书
自我评价范文分享
2014/01/04 职场文书
大学生如何写自荐信
2014/01/08 职场文书
行政监察建议书
2014/05/19 职场文书
关于运动会广播稿300字
2014/10/05 职场文书
党的群众路线教育实践活动学习计划
2014/11/03 职场文书
2014年宣传思想工作总结
2014/12/10 职场文书
公务员保密工作承诺书
2015/05/04 职场文书
推广普通话的宣传语
2015/07/13 职场文书
将Python代码打包成.exe可执行文件的完整步骤
2021/05/12 Python