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 相关文章推荐
pycharm 使用心得(二)设置字体大小
Jun 05 Python
python从网络读取图片并直接进行处理的方法
May 22 Python
详解在Python程序中自定义异常的方法
Oct 16 Python
Python win32com 操作Exce的l简单方法(必看)
May 25 Python
python3利用tcp实现文件夹远程传输
Jul 28 Python
python得到qq句柄,并显示在前台的方法
Oct 14 Python
详解使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件
Aug 23 Python
python画环形图的方法
Mar 25 Python
Pytorch 使用CNN图像分类的实现
Jun 16 Python
使用Python实现微信拍一拍功能的思路代码
Jul 09 Python
使用tensorflow 实现反向传播求导
May 26 Python
Python绘制散乱的点构成的图的方法
Apr 21 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中如何将数组变量写入文件
2013/06/06 PHP
mantis安装、配置和使用中的问题小结
2014/07/14 PHP
php将textarea数据提交到mysql出现很多空格的解决方法
2014/12/19 PHP
PHP实现的方程求解示例分析
2016/11/11 PHP
PHP 根据key 给二维数组分组
2016/12/09 PHP
Mac下php 5升级到php 7的步骤详解
2017/04/26 PHP
jQuery ajax在GBK编码下表单提交终极解决方案(非二次编码方法)
2010/10/20 Javascript
自定义的一个简单时尚js下拉选择框
2013/11/20 Javascript
jquery让指定的元素闪烁显示的方法
2015/03/17 Javascript
在JavaScript中用getMinutes()方法返回指定的分时刻
2015/06/10 Javascript
javascript实现连续赋值
2015/08/10 Javascript
详谈javascript异步编程
2016/02/21 Javascript
禁用backspace网页回退功能的实现代码
2016/11/15 Javascript
Angularjs 依赖压缩及自定义过滤器写法
2017/02/04 Javascript
ES6中Math对象新增的方法实例详解
2017/04/25 Javascript
JavaScript实现计算多边形质心的方法示例
2018/01/31 Javascript
vue项目webpack中Npm传递参数配置不同域名接口
2018/06/15 Javascript
深入浅析Vue全局组件与局部组件的区别
2018/06/15 Javascript
vue中使用elementUI组件手动上传图片功能
2019/12/13 Javascript
uni-app使用微信小程序云函数的步骤示例
2020/05/22 Javascript
基于Vue sessionStorage实现保留搜索框搜索内容
2020/06/01 Javascript
[11:27]《一刀刀一天》之DOTA全时刻20:TI4总奖金突破920W TS赛事分析
2014/06/18 DOTA
DJANGO-ALLAUTH社交用户系统的安装配置
2014/11/18 Python
对python 中class与变量的使用方法详解
2019/06/26 Python
Pytorch 保存模型生成图片方式
2020/01/10 Python
一个非常简单好用的Python图形界面库(PysimpleGUI)
2020/12/28 Python
W3C公布最新的HTML5标准草案
2008/10/17 HTML / CSS
app内嵌H5 webview 本地缓存问题的解决
2020/10/19 HTML / CSS
YesBabyOnline美国:全球性的在线婚纱礼服工厂
2018/05/05 全球购物
澳大利亚手袋、珠宝和在线时尚精品店:The Way
2019/12/21 全球购物
报告会主持词
2014/04/02 职场文书
实习单位证明范例
2014/11/17 职场文书
2015年社区综治工作总结
2015/04/21 职场文书
毕业论文致谢格式模板
2015/05/14 职场文书
《彼得与狼》教学反思
2016/02/20 职场文书
Pytorch distributed 多卡并行载入模型操作
2021/06/05 Python