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判断文件或文件夹是否存在的三种方法
Jul 27 Python
Python实现基于多线程、多用户的FTP服务器与客户端功能完整实例
Aug 18 Python
python读取视频流提取视频帧的两种方法
Oct 22 Python
Python3实现爬取指定百度贴吧页面并保存页面数据生成本地文档的方法
Apr 22 Python
Python使用min、max函数查找二维数据矩阵中最小、最大值的方法
May 15 Python
详解Python字典小结
Oct 20 Python
解决安装pycharm后不能执行python脚本的问题
Jan 19 Python
对python 合并 累加两个dict的实例详解
Jan 21 Python
python微信聊天机器人改进版(定时或触发抓取天气预报、励志语录等,向好友推送)
Apr 25 Python
Python 线程池用法简单示例
Oct 02 Python
python+selenium+chromedriver实现爬虫示例代码
Apr 10 Python
Python Django 后台管理之后台模型属性详解
Apr 25 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接口中interface存在的意义
2013/06/27 PHP
ecshop后台编辑器替换成ueditor编辑器
2015/03/03 PHP
简单了解PHP编程中数组的指针的使用
2015/11/30 PHP
PHP判断密码强度的方法详解
2017/05/26 PHP
微信封装的调用微信签名包的类库
2017/06/08 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
PHP实现的mysql读写分离操作示例
2018/05/22 PHP
对laravel的csrf 防御机制详解,及form中csrf_token()的存在介绍
2019/10/24 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
2020/02/15 PHP
HTML DOM的nodeType值介绍
2011/03/31 Javascript
jQuery 源码分析笔记(6) jQuery.data
2011/06/08 Javascript
分享XmlHttpRequest调用Webservice的一点心得
2012/07/20 Javascript
使用jQuery快速解决input中placeholder值在ie中无法支持的问题
2014/01/02 Javascript
jQuery中DOM树操作之复制元素的方法
2015/01/23 Javascript
jQuery实现的登录浮动框效果代码
2015/09/26 Javascript
js编写贪吃蛇的小游戏
2020/08/24 Javascript
使用Bootstrap typeahead插件实现搜索框自动补全的方法
2016/07/07 Javascript
js禁止浏览器页面后退功能的实例(推荐)
2017/09/01 Javascript
Node.js安装详细步骤教程(Windows版)详解
2019/09/01 Javascript
javascript+Canvas实现画板功能
2020/06/23 Javascript
详解Vue的组件中data选项为什么必须是函数
2020/08/17 Javascript
[02:49]DOTA2完美大师赛首日观众采访
2017/11/23 DOTA
[42:23]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第二场 12.10
2020/12/13 DOTA
python插入数据到列表的方法
2015/04/30 Python
python 二分查找和快速排序实例详解
2017/10/13 Python
Pycharm 实现下一个文件引用另外一个文件的方法
2019/01/17 Python
对python以16进制打印字节数组的方法详解
2019/01/24 Python
不到20行代码用Python做一个智能聊天机器人
2019/04/19 Python
详解HTML5中表单验证的8种方法介绍
2016/12/19 HTML / CSS
美国猫狗药物和用品网站:PetCareRx
2017/01/05 全球购物
全球性的在线婚纱礼服工厂:27dress.com
2019/03/21 全球购物
工艺工程师工作职责
2013/11/23 职场文书
活动简报范文
2015/07/22 职场文书
《打电话》教学反思
2016/02/22 职场文书
总结一下关于在Java8中使用stream流踩过的一些坑
2021/06/24 Java/Android
Python数据可视化之Seaborn的安装及使用
2022/04/19 Python