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 基础教程之包和类的用法
Feb 23 Python
python中类变量与成员变量的使用注意点总结
Apr 29 Python
python实现数据库跨服务器迁移
Apr 12 Python
深入分析python中整型不会溢出问题
Jun 18 Python
Python 读取某个目录下所有的文件实例
Jun 23 Python
通过python顺序修改文件名字的方法
Jul 11 Python
Python图像滤波处理操作示例【基于ImageFilter类】
Jan 03 Python
Python面向对象总结及类与正则表达式详解
Apr 18 Python
Python3.5集合及其常见运算实例详解
May 01 Python
NumPy中的维度Axis详解
Nov 26 Python
Mac中PyCharm配置Anaconda环境的方法
Mar 04 Python
Python 正则模块详情
Nov 02 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/07/12 PHP
如何利用php+mysql保存和输出文件
2006/10/09 PHP
PHP 一个比较完善的简单文件上传
2010/03/25 PHP
PHP学习笔记(三):数据类型转换与常量介绍
2015/04/17 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
2016/01/15 PHP
PHP对象克隆clone用法示例
2016/09/28 PHP
php写app接口并返回json数据的实例(分享)
2017/05/20 PHP
Smarty模板配置实例简析
2019/07/20 PHP
jquery 中的each()跳出循环的语句
2014/05/23 Javascript
jquery+html5制作超酷的圆盘时钟表
2015/04/14 Javascript
JS封装通过className获取元素的函数示例
2016/12/20 Javascript
jQuery 利用ztree实现树形表格的实例代码
2017/09/27 jQuery
Vue头像处理方案小结
2018/07/26 Javascript
jQuery实现判断滚动条滚动到document底部的方法分析
2019/08/27 jQuery
解决antd 下拉框 input [defaultValue] 的值的问题
2020/10/31 Javascript
解决element-ui的下拉框有值却无法选中的情况
2020/11/07 Javascript
python自动化测试之从命令行运行测试用例with verbosity
2014/09/28 Python
Python装饰器实现几类验证功能做法实例
2017/05/18 Python
Django web框架使用url path name详解
2019/04/29 Python
使用Python的OpenCV模块识别滑动验证码的缺口(推荐)
2019/05/10 Python
tensorflow求导和梯度计算实例
2020/01/23 Python
python对数组进行排序,并输出排序后对应的索引值方式
2020/02/28 Python
PyQt5如何将.ui文件转换为.py文件的实例代码
2020/05/26 Python
python Xpath语法的使用
2020/11/26 Python
Mio Skincare英国官网:身体紧致及孕期身体护理
2018/08/19 全球购物
音乐系毕业生自荐信
2013/10/27 职场文书
经理秘书找工作求职信
2013/12/19 职场文书
个人充满哲理的自我评价
2014/02/20 职场文书
质量管理标语
2014/06/12 职场文书
学习朴航瑛老师爱岗敬业先进事迹思想汇报
2014/09/17 职场文书
老公给老婆的检讨书(精华篇)
2014/10/18 职场文书
应聘教师自荐信
2015/03/26 职场文书
工程合作意向书范本
2015/05/09 职场文书
婚礼双方父亲致辞
2015/07/27 职场文书
2019行政前台转正申请书范文3篇
2019/08/15 职场文书
python 解决微分方程的操作(数值解法)
2021/05/26 Python