Python 内置函数globals()和locals()对比详解


Posted in Python onDecember 23, 2019

这篇文章主要介绍了Python globals()和locals()对比详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

Python的两个内置函数,globals()和locals() ,它们提供了基于字典的访问局部和全局变量的方式。

globals()是可写的,即,可修改该字典中的键值,可新增和删除键值对。

而locals()是不可修改字典中已存在的键值的,也不能pop移除键值对,但是可以新增键值对。

Demo:

a = 1  # 定义一个全局变量a

def demo():
  x = 100   # 定义一个局部变量x
  global b
  b = 2    # 定义一个全局变量b,因为在函数内,只有调用了该函数才有变量b

  print(globals())  
  print(locals())   

  globals()['a'] = 'modified a'  # 修改函数外的全局变量a,成功
  globals()['b'] = 'modified b'  # 修改函数中定义的全局变量b,成功
  globals()['c'] = 'new c'    # 新增一个全局变量c,成功
  locals()['x'] = 'modified x'  # 修改函数内的局部变量x,结果失败了
  locals()['y'] = 'new y'     # 新增一个函数内的局部变量y,成功
  globals().pop('c')       # 尝试移除全局变量c,成功
  locals().pop('x')        # 尝试移除局部变量x,失败了

  print(globals())
  print(locals())
def print_b():
  try:
    print(b)
  except NameError as e:
    print(e)

def print_x():
  try:
    print(x)
  except NameError as e:
    print(e)


print_b()  # b虽然是全局变量,但是是在函数demo内定义的,在该函数调用前b是没有的,所以not defined
demo()   # 调用demo函数,此时有了全局变量b
print_x()  # x局部变量,在外访问不到
print_b()  # 此时打印全局变量b正常,并且是修改后的值

# 打印结果   字典中省略了内置的变量和定义的方法,方便比较
name 'b' is not defined
{'a': 1, 'b': 2}  # globals()
{'x': 100}     # locals()
{'a': 'modified a', 'b': 'modified b'}   # globals()
{'y': 'new y', 'x': 100}          # locals()
name 'x' is not defined
modified b

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

Python 相关文章推荐
Python3基础之函数用法
Aug 13 Python
Python os模块介绍
Nov 30 Python
python遍历类中所有成员的方法
Mar 18 Python
如何使用python爬取csdn博客访问量
Feb 14 Python
Python编程实现双击更新所有已安装python模块的方法
Jun 05 Python
Python基于jieba库进行简单分词及词云功能实现方法
Jun 16 Python
Django实现分页功能
Jul 02 Python
python实现汉诺塔算法
Mar 01 Python
如何使用Python自动控制windows桌面
Jul 11 Python
Django项目之Elasticsearch搜索引擎的实例
Aug 21 Python
Python基于jieba, wordcloud库生成中文词云
May 13 Python
Pycharm Plugins加载失败问题解决方案
Nov 28 Python
Python 项目转化为so文件实例
Dec 23 #Python
python 解决cv2绘制中文乱码问题
Dec 23 #Python
python 实现查询Neo4j多节点的多层关系
Dec 23 #Python
python 多进程队列数据处理详解
Dec 23 #Python
python3实现从kafka获取数据,并解析为json格式,写入到mysql中
Dec 23 #Python
python读取ini配置文件过程示范
Dec 23 #Python
python读取Kafka实例
Dec 23 #Python
You might like
十大“创意”战术!
2020/03/04 星际争霸
生成缩略图
2006/10/09 PHP
深入php中var_dump方法的使用详解
2013/06/24 PHP
phpExcel中文帮助手册之常用功能指南
2014/08/18 PHP
PHP可变函数学习小结
2015/11/29 PHP
PHPCMS V9 添加二级导航的思路详解
2016/10/20 PHP
5款Javascript颜色选择器
2009/10/25 Javascript
js中判断数字\字母\中文的正则表达式 (实例)
2012/06/29 Javascript
纯JavaScript实现HTML5 Canvas六种特效滤镜示例
2013/06/28 Javascript
js检测浏览器版本、核心、是否移动端示例
2014/04/24 Javascript
js实现仿Discuz文本框弹出层效果
2015/08/13 Javascript
快速学习jQuery插件 jquery.validate.js表单验证插件使用方法
2015/12/01 Javascript
jQuery模拟物体自由落体运动(附演示与demo源码下载)
2016/01/21 Javascript
jquery ajax结合thinkphp的getjson实现跨域的方法
2016/06/06 Javascript
js实现交通灯效果
2017/01/13 Javascript
详解Angular2响应式表单
2017/06/14 Javascript
Vue的Flux框架之Vuex状态管理器
2017/07/30 Javascript
Angular2使用vscode断点调试ts文件的方法
2017/12/13 Javascript
详解vue2.0 不同屏幕适配及px与rem转换问题
2018/02/23 Javascript
Vue 组件传值几种常用方法【总结】
2018/05/28 Javascript
vue-quill-editor富文本编辑器简单使用方法
2018/09/21 Javascript
layui 弹出删除确认界面的实例
2019/09/06 Javascript
jQuery实现的上拉刷新功能组件示例
2020/05/01 jQuery
vue+elementUI实现简单日历功能
2020/09/24 Javascript
Python库urllib与urllib2主要区别分析
2014/07/13 Python
python-Web-flask-视图内容和模板知识点西宁街
2019/08/23 Python
50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)
2019/11/20 Python
Python使用for生成列表实现过程解析
2020/09/22 Python
越南母婴用品购物网站:Kids Plaza
2020/04/09 全球购物
3D空间设计学生找工作的自我评价
2013/10/28 职场文书
专业求职信撰写要诀
2014/02/18 职场文书
社团2014年植树节活动总结
2014/03/11 职场文书
安全承诺书范文
2014/03/26 职场文书
创先争优活动党员公开承诺书
2014/08/29 职场文书
党员干部对十八届四中全会的期盼
2014/10/17 职场文书
python使用XPath解析数据爬取起点小说网数据
2021/04/22 Python