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 相关文章推荐
Python使用函数默认值实现函数静态变量的方法
Aug 18 Python
用Python制作检测Linux运行信息的工具的教程
Apr 01 Python
Python的SimpleHTTPServer模块用处及使用方法简介
Jan 22 Python
python中kmeans聚类实现代码
Feb 23 Python
解决python读取几千万行的大表内存问题
Jun 26 Python
浅谈Python traceback的优雅处理
Aug 31 Python
python石头剪刀布小游戏(三局两胜制)
Jan 20 Python
基于python-opencv3的图像显示和保存操作
Jun 27 Python
python爬虫 批量下载zabbix文档代码实例
Aug 21 Python
python实现递归查找某个路径下所有文件中的中文字符
Aug 31 Python
浅谈cv2.imread()和keras.preprocessing中的image.load_img()区别
Jun 12 Python
分享一枚pycharm激活码适用所有pycharm版本我的pycharm2020.2.3激活成功
Nov 20 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
第六节--访问属性和方法
2006/11/16 PHP
php源代码安装常见错误与解决办法分享
2013/05/28 PHP
php+jquery+html实现点击不刷新加载更多的实例代码
2016/08/12 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
PHP实现微信小程序人脸识别刷脸登录功能
2018/05/24 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
2018/11/30 PHP
jQuery给多个不同元素添加class样式的方法
2015/03/26 Javascript
纯js实现无限空间大小的本地存储
2015/06/18 Javascript
浅谈JavaScript 的执行顺序
2015/08/07 Javascript
jQuery实现网页抖动的菜单抖动效果
2015/08/07 Javascript
浅谈Sublime Text 3运行JavaScript控制台
2016/06/06 Javascript
Vuejs仿网易云音乐实现听歌及搜索功能
2017/03/30 Javascript
使用JQ完成表格隔行换色的简单实例
2017/08/25 Javascript
Vue.js实现图片的随意拖动方法
2018/03/08 Javascript
详解Vue基于 Nuxt.js 实现服务端渲染(SSR)
2018/04/05 Javascript
vue里面v-bind和Props 利用props绑定动态数据的方法
2018/08/27 Javascript
解决Vue的项目使用Element ui 走马灯无法实现的问题
2020/08/03 Javascript
Python多线程学习资料
2012/12/19 Python
Python利用Nagios增加微信报警通知的功能
2016/02/18 Python
简单谈谈python的反射机制
2016/06/28 Python
举例讲解Python中metaclass元类的创建与使用
2016/06/30 Python
Python实现简单的文本相似度分析操作详解
2018/06/16 Python
详解Python学习之安装pandas
2019/04/16 Python
python集成开发环境配置(pycharm)
2020/02/14 Python
python实现批量转换图片为黑白
2020/06/16 Python
canvas像素点操作之视频绿幕抠图
2018/09/11 HTML / CSS
西雅图电动自行车公司:Rad Power Bikes
2020/02/02 全球购物
体现团队精神的口号
2014/06/06 职场文书
运动会的口号
2014/06/09 职场文书
英语专业自荐书
2014/06/13 职场文书
离婚财产处理协议书
2014/09/30 职场文书
2014年学生会主席工作总结
2014/11/07 职场文书
单位实习鉴定评语
2015/01/04 职场文书
德能勤绩工作总结
2015/08/11 职场文书
Python使用scapy模块发包收包
2021/05/07 Python
golang三种设计模式之简单工厂、方法工厂和抽象工厂
2022/04/10 Golang