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实现监控linux性能及进程消耗性能的方法
Jul 25 Python
Python内置函数dir详解
Apr 14 Python
python Django批量导入数据
Mar 25 Python
简单实现python进度条脚本
Dec 18 Python
Python中if elif else及缩进的使用简述
May 31 Python
Python socket套接字实现C/S模式远程命令执行功能案例
Jul 06 Python
解决Python print输出不换行没空格的问题
Nov 14 Python
新手如何发布Python项目开源包过程详解
Jul 11 Python
Python图像处理PIL各模块详细介绍(推荐)
Jul 17 Python
python 的 openpyxl模块 读取 Excel文件的方法
Sep 09 Python
Python 正则表达式爬虫使用案例解析
Sep 23 Python
Python assert关键字原理及实例解析
Dec 13 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
国产动画《伍六七》原声大碟大卖,啊哈娱乐引领音乐赋能IP的新尝试
2020/03/08 国漫
一个图形显示IP的PHP程序代码
2007/10/19 PHP
使用PHP求两个文件的相对路径
2013/06/20 PHP
ThinkPHP令牌验证实例
2014/06/18 PHP
Yii 2.0在Grid中格式化时间方法示例
2017/06/06 PHP
PHP获取MySQL执行sql语句的查询时间方法
2018/08/21 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
用方法封装javascript的new操作符(一)
2010/12/25 Javascript
Extjs实现进度条的两种便捷方式
2013/09/26 Javascript
javascript版2048小游戏
2015/03/18 Javascript
js添加绑定事件的方法
2016/05/15 Javascript
深入解析JavaScript中的立即执行函数
2016/05/21 Javascript
jQuery插件Validation快速完成表单验证的方式
2016/07/28 Javascript
window.open不被拦截的简单实现代码(推荐)
2016/08/04 Javascript
javascript 将共享属性迁移到原型中去的实现方法
2016/08/31 Javascript
jquery组件WebUploader文件上传用法详解
2020/10/23 Javascript
AngularJS定时器的使用与移除操作方法【interval与timeout】
2016/12/14 Javascript
原生js实现淘宝购物车功能
2020/06/23 Javascript
js实现轮播图特效
2020/05/28 Javascript
详解Python3中的Sequence type的使用
2015/08/01 Python
Python进阶-函数默认参数(详解)
2017/05/18 Python
PyQt弹出式对话框的常用方法及标准按钮类型
2019/02/27 Python
将python文件打包成EXE应用程序的方法
2019/05/22 Python
详解pyinstaller selenium python3 chrome打包问题
2019/10/18 Python
python实现图片二值化及灰度处理方式
2019/12/07 Python
使用 pytorch 创建神经网络拟合sin函数的实现
2020/02/24 Python
PyCharm设置Ipython交互环境和宏快捷键进行数据分析图文详解
2020/04/23 Python
使用CSS3的rem属性制作响应式页面布局的要点解析
2016/05/24 HTML / CSS
美国最大的宠物药店:1-800-PetMeds
2016/10/02 全球购物
《圆明园的毁灭》教学反思
2014/02/28 职场文书
工作时间擅自离岗检讨书
2014/10/24 职场文书
酒店员工辞职信范文
2015/02/28 职场文书
2016年“世界环境日”校园广播稿
2015/12/18 职场文书
判断Python中的Nonetype类型
2021/05/25 Python
Feign调用全局异常处理解决方案
2021/06/24 Java/Android
Java 多态分析
2022/04/26 Java/Android