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 Trie树实现字典排序
Mar 28 Python
Linux下Python获取IP地址的代码
Nov 30 Python
Python爬虫模拟登录带验证码网站
Jan 22 Python
python下os模块强大的重命名方法renames详解
Mar 07 Python
djang常用查询SQL语句的使用代码
Feb 15 Python
Python画图高斯分布的示例
Jul 10 Python
Python Gitlab Api 使用方法
Aug 28 Python
python实现多进程通信实例分析
Sep 01 Python
Python字符串和正则表达式中的反斜杠('\')问题详解
Sep 03 Python
nginx+uwsgi+django环境搭建的方法步骤
Nov 25 Python
Python文件操作基础流程解析
Mar 19 Python
python3检查字典传入函数键是否齐全的实例
Jun 05 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
php 购物车实例(申精)
2009/05/11 PHP
详解php设置session(过期、失效、有效期)
2015/11/12 PHP
PHP对象实例化单例方法
2017/01/19 PHP
Yii支持多域名cors原理的实现
2018/12/05 PHP
Js之软键盘实现(js源码)
2007/01/30 Javascript
说说JSON和JSONP 也许你会豁然开朗
2012/09/02 Javascript
Asp.Net alert弹出提示信息的几种方法总结
2014/01/29 Javascript
jQuery获得页面元素的绝对/相对位置即绝对X,Y坐标
2014/03/06 Javascript
js获取字符串字节数方法小结
2015/06/09 Javascript
关于jquery中动态增加select,事件无效的快速解决方法
2016/08/29 Javascript
Node.js中路径处理模块path详解
2016/11/14 Javascript
vue+elementUI实现图片上传功能
2019/08/20 Javascript
vue中实现上传文件给后台实例详解
2019/08/22 Javascript
解决Vue动态加载本地图片问题
2019/10/09 Javascript
vue实现在v-html的html字符串中绑定事件
2019/10/28 Javascript
JavaScript实现PC端横向轮播图
2020/02/07 Javascript
javascript设计模式 ? 抽象工厂模式原理与应用实例分析
2020/04/09 Javascript
微信小程序实现多选框功能的实例代码
2020/06/24 Javascript
解决vue项目中某一页面不想引用公共组件app.vue的问题
2020/08/14 Javascript
[00:32]2018DOTA2亚洲邀请赛OpTic出场
2018/04/03 DOTA
一个超级简单的python web程序
2014/09/11 Python
Python爬虫实现全国失信被执行人名单查询功能示例
2018/05/03 Python
python 实现dict转json并保存文件
2019/12/05 Python
tensorflow实现二维平面模拟三维数据教程
2020/02/11 Python
Python字符串格式化常用手段及注意事项
2020/06/17 Python
python中的测试框架
2020/11/13 Python
弄清Pytorch显存的分配机制
2020/12/10 Python
CSS3 实现侧边栏展开收起动画
2014/12/22 HTML / CSS
英国Boots旗下太阳镜网站:Boots Designer Sunglasses
2018/07/07 全球购物
我的老师教学反思
2014/05/01 职场文书
装配出错检讨书
2014/09/23 职场文书
上课说话检讨书500字
2014/11/01 职场文书
七年级地理教学计划
2015/01/22 职场文书
小学副班长竞选稿
2015/11/21 职场文书
2016年度创先争优活动总结
2016/04/05 职场文书
MySQL 聚合函数排序
2021/07/16 MySQL