Python 中的 global 标识对变量作用域的影响


Posted in Python onAugust 12, 2019

global 标识用于在函数内部,修改全局变量的值。

我们可以通过以下规则,来判定一个变量到底是在全局作用域还是局部作用域:

  1. 变量定义在全局作用域,那就是全局变量。
  2. 变量在函数中定义,并且加了 global 标识,就是全局变量。
  3. 如果变量在函数中仅做了定义,那么就是局部变量。
  4. 如果变量在函数中仅仅是使用,那么就是全局变量。

下面的示例,有助于理解上述规则:

def cook():
  global dumplings
  dumplings = '10' # 全局变量
  print('cook():' + dumplings)
def cook2():
  dumplings = '22' # 局部变量
  print('cook2():' + dumplings)
def cook3():
  print('cook3():' + dumplings) # 全局变量
dumplings = 3 # 全局变量
cook()
print('global:' + dumplings)
cook3()
cook2()

运行结果:

cook():10  global:10  cook3():10  cook2():22

注意:在函数中,如果在变量定义之前先使用它,就会抛错:

def cook():
  print(dumplings)
  dumplings = 'local'
dumplings = 'global'
cook()

运行结果:

UnboundLocalError: local variable 'dumplings' referenced before assignment

因为在函数中,存在对 dumplings 的定义赋值语句,所以被认为是局部变量。所以在定义之前,先访问这个局部变量就会抛错。

总结

以上所述是小编给大家介绍的Python 中的 global 标识对变量作用域的影响,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python3使用requests包抓取并保存网页源码的方法
Mar 15 Python
python中异常报错处理方法汇总
Nov 20 Python
详解Python 序列化Serialize 和 反序列化Deserialize
Aug 20 Python
Python三级菜单的实例
Sep 13 Python
Python3中的列表,元组,字典,字符串相关知识小结
Nov 10 Python
python中lambda()的用法
Nov 16 Python
tensorflow实现简单的卷积神经网络
May 24 Python
python中plot实现即时数据动态显示方法
Jun 22 Python
python numpy 按行归一化的实例
Jan 21 Python
Python实现将蓝底照片转化为白底照片功能完整实例
Dec 13 Python
python3连接MySQL8.0的两种方式
Feb 17 Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
Feb 28 Python
Python中pymysql 模块的使用详解
Aug 12 #Python
python中类的输出或类的实例输出为这种形式的原因
Aug 12 #Python
对Django 中request.get和request.post的区别详解
Aug 12 #Python
python文字和unicode/ascll相互转换函数及简单加密解密实现代码
Aug 12 #Python
Python简易版停车管理系统
Aug 12 #Python
Python代码实现http/https代理服务器的脚本
Aug 12 #Python
Django admin model 汉化显示文字的实现方法
Aug 12 #Python
You might like
php 常用字符串函数总结
2008/03/15 PHP
PHP中异常处理的一些方法整理
2015/07/03 PHP
php-redis中的sort排序函数总结
2015/07/08 PHP
Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法
2016/05/31 PHP
PHP 序列化和反序列化函数实例详解
2020/07/18 PHP
IE6不能修改NAME问题的解决方法
2010/09/03 Javascript
从数据结构分析看:用for each...in 比 for...in 要快些
2013/04/17 Javascript
JS打开层/关闭层/移动层动画效果的实例代码
2013/05/11 Javascript
基于jQuery实现二级下拉菜单效果
2016/02/01 Javascript
JQuery中attr属性和jQuery.data()学习笔记【必看】
2016/05/18 Javascript
JS常用知识点整理
2017/01/21 Javascript
Java与JavaScript中判断两字符串是否相等的区别
2017/03/13 Javascript
在Vue中用canvas实现二维码和图片合成海报的方法
2019/06/10 Javascript
jquery实现上传图片功能
2020/06/29 jQuery
浅谈JavaScript窗体Window.ShowModalDialog使用
2020/07/22 Javascript
使用Python的urllib2模块处理url和图片的技巧两则
2016/02/18 Python
一个基于flask的web应用诞生 组织结构调整(7)
2017/04/11 Python
python实现unicode转中文及转换默认编码的方法
2017/04/29 Python
python中将字典形式的数据循环插入Excel
2018/01/16 Python
详解Python中的动态属性和特性
2018/04/07 Python
python适合人工智能的理由和优势
2019/06/28 Python
Python迭代器模块itertools使用原理解析
2019/12/11 Python
python seaborn heatmap可视化相关性矩阵实例
2020/06/03 Python
windows10在visual studio2019下配置使用openCV4.3.0
2020/07/14 Python
详解python中GPU版本的opencv常用方法介绍
2020/07/24 Python
Europcar葡萄牙:葡萄牙汽车和货车租赁
2017/10/13 全球购物
Myprotein意大利官网:欧洲第一运动营养品牌
2018/11/22 全球购物
新闻学专业应届生求职信
2013/11/08 职场文书
运动会邀请函范文
2014/01/31 职场文书
人力资源管理专业自荐书范文
2014/02/10 职场文书
财务学生的职业生涯发展
2014/02/11 职场文书
网站创业计划书
2014/04/30 职场文书
松材线虫病防治方案
2014/06/15 职场文书
班级课外活动总结
2014/07/09 职场文书
党性心得体会
2014/09/03 职场文书
交通安全宣传标语(100条)
2019/08/22 职场文书