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通过websocket与js客户端通信示例分析
Jun 25 Python
python批量修改文件名的实现代码
Sep 01 Python
Python OS模块常用函数说明
May 23 Python
使用Python的Tornado框架实现一个Web端图书展示页面
Jul 11 Python
python3基于TCP实现CS架构文件传输
Jul 28 Python
Python进阶之全面解读高级特性之切片
Feb 19 Python
使用python搭建服务器并实现Android端与之通信的方法
Jun 28 Python
Python中的几种矩阵乘法(小结)
Jul 10 Python
对Python函数设计规范详解
Jul 19 Python
Django配置MySQL数据库的完整步骤
Sep 07 Python
Python如何实现动态数组
Nov 02 Python
tensorflow模型转ncnn的操作方式
May 25 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中spl_autoload_register()和__autoload()区别分析
2014/05/10 PHP
php实现的一个简单json rpc框架实例
2015/03/30 PHP
微信公众平台开发教程②微信端分享功能图文详解
2019/04/10 PHP
基于javascript 闭包基础分享
2013/07/10 Javascript
jquery 根据name名获取元素的value值
2015/02/27 Javascript
Java File类的常用方法总结
2015/03/18 Javascript
使用jQuery判断浏览器滚动条位置的方法
2016/05/30 Javascript
Angular2使用Augury来调试Angular2程序
2017/05/21 Javascript
浅析从vue源码看观察者模式
2018/01/29 Javascript
对vue.js中this.$emit的深入理解
2018/02/23 Javascript
JavaScript多种图形实现代码实例
2020/06/28 Javascript
python数据结构之图的实现方法
2015/07/08 Python
在Python程序中操作MySQL的基本方法
2015/07/29 Python
使用pandas中的DataFrame数据绘制柱状图的方法
2018/04/10 Python
pycharm运行出现ImportError:No module named的解决方法
2018/10/13 Python
检测python爬虫时是否代理ip伪装成功的方法
2019/07/12 Python
python3 webp转gif格式的实现示例
2019/12/10 Python
jupyter note 实现将数据保存为word
2020/04/14 Python
PyCharm2019.3永久激活破解详细图文教程,亲测可用(不定期更新)
2020/10/29 Python
详解pycharm自动import所需的库的操作方法
2020/11/30 Python
Nike爱尔兰官方网站:Nike.com (IE)
2018/03/12 全球购物
万宝龙英国官网:Montblanc手表、书写工具、皮革和珠宝
2018/10/16 全球购物
经济实惠的豪华家具:My-Furniture
2019/03/12 全球购物
Farfetch澳大利亚官网:Farfetch Australia
2020/04/26 全球购物
汽车专业毕业生推荐信
2013/11/12 职场文书
护士辞职信范文
2014/01/19 职场文书
护士自我鉴定怎么写
2014/02/07 职场文书
温馨提示标语
2014/06/26 职场文书
小学数学教研活动总结
2014/07/01 职场文书
安全在我心中演讲稿
2014/09/01 职场文书
优秀大学生事迹材料
2014/12/24 职场文书
司机岗位职责
2015/02/04 职场文书
2015年会计工作总结范文
2015/05/26 职场文书
拉贝日记观后感
2015/06/05 职场文书
如何理解及使用Python闭包
2021/06/01 Python
为Centos安装指定版本的Docker
2022/04/01 Servers