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线程中对join方法的运用的教程
Apr 09 Python
Python的迭代器和生成器
Jul 29 Python
Python 多进程并发操作中进程池Pool的实例
Nov 01 Python
python基于ID3思想的决策树
Jan 03 Python
Python列表推导式、字典推导式与集合推导式用法实例分析
Feb 07 Python
python使用xslt提取网页数据的方法
Feb 23 Python
利用TensorFlow训练简单的二分类神经网络模型的方法
Mar 05 Python
pandas DataFrame 警告(SettingWithCopyWarning)的解决
Jul 23 Python
python PIL和CV对 图片的读取,显示,裁剪,保存实现方法
Aug 07 Python
Python处理mysql特殊字符的问题
Mar 02 Python
Python3 mmap内存映射文件示例解析
Mar 23 Python
python压包的概念及实例详解
Feb 17 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
浅析Yii中使用RBAC的完全指南(用户角色权限控制)
2013/06/20 PHP
php 读取文件头判断文件类型的实现代码
2013/08/05 PHP
php中替换字符串中的空格为逗号','的方法
2014/06/09 PHP
php实现源代码加密的方法
2015/07/11 PHP
WordPress过滤垃圾评论的几种主要方法小结
2016/07/11 PHP
php in_array() 检查数组中是否存在某个值详解
2016/11/23 PHP
thinkPHP交易详情查询功能详解
2016/12/02 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
2018/06/20 PHP
把jquery 的dialog和ztree结合实现步骤
2013/08/02 Javascript
JS使用replace()方法和正则表达式进行字符串的搜索与替换实例
2014/04/10 Javascript
js实现的早期滑动门菜单效果代码
2015/08/27 Javascript
Bootstrap每天必学之导航条
2015/11/27 Javascript
基于javascript编写简单日历
2016/05/02 Javascript
javascript表单处理具体实现代码(表单、链接、按钮)
2016/05/07 Javascript
自带气泡提示的vue校验插件(vue-verify-pop)
2017/04/07 Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
2017/04/20 jQuery
老生常谈JavaScript面向对象基础与this指向问题
2017/10/16 Javascript
webpack4 CSS Tree Shaking的使用
2018/09/03 Javascript
JS实现带阴历的日历功能详解
2019/01/24 Javascript
jQuery实现高级检索功能
2019/05/28 jQuery
js消除图片小游戏代码
2019/12/11 Javascript
Vue登录拦截 登录后继续跳转指定页面的操作
2020/08/04 Javascript
python连接sql server乱码的解决方法
2013/01/28 Python
Python中的ctime()方法使用教程
2015/05/22 Python
Python在不同目录下导入模块的实现方法
2017/10/27 Python
用python爬取租房网站信息的代码
2018/12/14 Python
python基于opencv检测程序运行效率
2019/12/28 Python
如何用Python提取10000份log中的产品信息
2021/01/14 Python
天美时手表加拿大官网:Timex加拿大
2016/09/01 全球购物
师范应届毕业生自荐信
2013/11/18 职场文书
中学实习教师自我鉴定
2013/12/12 职场文书
《一件运动衫》教学反思
2014/02/19 职场文书
小学生国庆节演讲稿
2014/09/05 职场文书
企业党员个人自我评价
2014/09/20 职场文书
房地产销售主管岗位职责
2015/02/13 职场文书
Python面向对象编程之类的概念
2021/11/01 Python