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 相关文章推荐
基于python的汉字转GBK码实现代码
Feb 19 Python
用于统计项目中代码总行数的Python脚本分享
Apr 21 Python
python计算auc指标实例
Jul 13 Python
python 删除大文件中的某一行(最有效率的方法)
Aug 19 Python
Python实现PS滤镜中马赛克效果示例
Jan 20 Python
Python3实现的字典、列表和json对象互转功能示例
May 22 Python
python之cv2与图像的载入、显示和保存实例
Dec 05 Python
浅谈python 导入模块和解决文件句柄找不到问题
Dec 15 Python
解决pycharm 工具栏Tool中找不到Run manager.py Task的问题
Jul 01 Python
Python 多个图同时在不同窗口显示的实现方法
Jul 07 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
Sep 15 Python
keras实现VGG16方式(预测一张图片)
Jul 07 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
推荐文章系统(一)
2006/10/09 PHP
jQuery之浮动窗口实现代码(两种方法)
2010/09/08 Javascript
有关于JS构造函数的重载和工厂方法
2013/04/07 Javascript
js获取视频时长代码
2014/04/10 Javascript
jQuery根据用户电脑是mac还是pc加载对应样式的方法
2015/06/26 Javascript
javascript比较语义化版本号的实现代码
2016/09/09 Javascript
JavaScript 是什么意思
2016/09/22 Javascript
微信小程序 点击控件后选中其它反选实例详解
2017/02/21 Javascript
jquery中关于bind()方法的使用技巧分享
2017/03/30 jQuery
React复制到剪贴板的示例代码
2017/08/22 Javascript
学习JS中的DOM节点以及操作
2018/04/30 Javascript
浅谈webpack 构建性能优化策略小结
2018/06/13 Javascript
jQuery实现获取form表单内容及绑定数据到form表单操作分析
2018/07/03 jQuery
详解keep-alive + vuex 让缓存的页面灵活起来
2019/04/19 Javascript
Vue项目前后端联调(使用proxyTable实现跨域方式)
2020/07/18 Javascript
微信小程序实现拼图小游戏
2020/10/22 Javascript
[02:53]DOTA2英雄昆卡基础教程
2013/11/25 DOTA
Python 文件和输入输出小结
2013/10/09 Python
Python探索之URL Dispatcher实例详解
2017/10/28 Python
python爬虫获取淘宝天猫商品详细参数
2020/06/23 Python
python读取文本绘制动态速度曲线
2018/06/21 Python
Python中类的创建和实例化操作示例
2019/02/27 Python
django rest framework 实现用户登录认证详解
2019/07/29 Python
python保存log日志,实现用log日志画图
2019/12/24 Python
Python networkx包的实现
2020/02/14 Python
基于python实现微信好友数据分析(简单)
2020/02/16 Python
PythonPC客户端自动化实现原理(pywinauto)
2020/05/28 Python
CSS3动画之利用requestAnimationFrame触发重新播放功能
2019/09/11 HTML / CSS
html5 worker 实例(二) 图片变换效果
2013/06/24 HTML / CSS
培训心得体会
2013/12/29 职场文书
科技之星事迹材料
2014/06/02 职场文书
组工干部演讲稿
2014/09/02 职场文书
素质教育学习心得体会
2016/01/19 职场文书
幼儿园中班教学反思
2016/03/03 职场文书
学习心得体会
2019/06/20 职场文书
Win11 Dev 预览版25174.1000发布 (附更新修复内容汇总)
2022/08/05 数码科技