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脚本来获取mp3文件tag信息的教程
May 04 Python
Python实现简单字典树的方法
Apr 29 Python
python daemon守护进程实现
Aug 27 Python
Python 编码处理-str与Unicode的区别
Sep 06 Python
Python装饰器用法实例总结
Feb 07 Python
python3实现斐波那契数列(4种方法)
Jul 15 Python
详解Django模版中加载静态文件配置方法
Jul 21 Python
Python中bisect的使用方法
Dec 31 Python
Mac PyCharm中的.gitignore 安装设置教程
Apr 16 Python
python中的对数log函数表示及用法
Dec 09 Python
python爬虫爬取图片的简单代码
Jan 18 Python
Python GUI编程之tkinter 关于 ttkbootstrap 的使用详解
Mar 03 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代码收集表单内容并写入文件的代码
2012/01/29 PHP
如何使用PHP计算上一个月的今天
2013/05/23 PHP
php curl登陆qq后获取用户信息时证书错误
2015/02/03 PHP
php中删除、清空session的方式总结
2015/10/09 PHP
PHP中功能强大却很少使用的函数实例小结
2016/11/10 PHP
php 自定义函数实现将数据 以excel 表格形式导出示例
2019/11/13 PHP
js自动生成对象的属性示例代码
2013/10/28 Javascript
js如何设置在iframe框架中指定div不显示
2013/12/04 Javascript
鼠标移到div,浮层显示明细,弹出层与div的上边距左边距重合(示例代码)
2013/12/14 Javascript
js 调用百度地图api并在地图上进行打点添加标注
2014/05/13 Javascript
JS时间特效最常用的三款
2015/08/19 Javascript
js实现全国省份城市级联下拉菜单效果代码
2015/09/07 Javascript
Angularjs通过指令监听ng-repeat渲染完成后执行脚本的方法
2016/12/31 Javascript
fullPage.js和CSS3实现全屏滚动效果
2017/05/05 Javascript
详解.vue文件解析的实现
2018/06/11 Javascript
npm 语义版本控制详解
2019/09/10 Javascript
JavaScript RegExp 对象用法详解
2019/09/24 Javascript
javascript实现点击星星小游戏
2019/12/24 Javascript
微信小程序转化为uni-app项目的方法示例
2020/05/22 Javascript
python编写弹球游戏的实现代码
2018/03/12 Python
教你一步步利用python实现贪吃蛇游戏
2019/06/27 Python
Python实现12306火车票抢票系统
2019/07/04 Python
使用TensorFlow对图像进行随机旋转的实现示例
2020/01/20 Python
Python使用文件操作实现一个XX信息管理系统的示例
2020/07/02 Python
如何用Python进行时间序列分解和预测
2021/03/01 Python
pip install命令安装扩展库整理
2021/03/02 Python
html5中audio支持音频格式的解决方法
2018/08/24 HTML / CSS
html5 datalist 选中option选项后的触发事件
2020/03/05 HTML / CSS
AmazeUI 等分网格的实现示例
2020/08/25 HTML / CSS
Too Faced官网:美国知名彩妆品牌
2017/03/07 全球购物
The Body Shop美体小铺西班牙官网:天然化妆品
2019/06/21 全球购物
比利时的在线灯具店:Lampen24.be
2019/07/01 全球购物
知名企业招聘广告词大全
2014/03/18 职场文书
教师对学生的评语
2014/04/28 职场文书
质量整改报告范文
2014/11/08 职场文书
新员工考核评语
2014/12/31 职场文书