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的Bottle框架中实现最基本的get和post的方法的教程
Apr 30 Python
python条件变量之生产者与消费者操作实例分析
Mar 22 Python
Python 实现购物商城,含有用户入口和商家入口的示例
Sep 15 Python
小米5s微信跳一跳小程序python源码
Jan 08 Python
python实现学生信息管理系统
Apr 05 Python
python处理两种分隔符的数据集方法
Dec 12 Python
更新pip3与pyttsx3文字语音转换的实现方法
Aug 08 Python
selenium+python实现自动登陆QQ邮箱并发送邮件功能
Dec 13 Python
Python基于requests实现模拟上传文件
Apr 21 Python
Pytorch转tflite方式
May 25 Python
一文轻松掌握python语言命名规范规则
Jun 18 Python
python os.rename实例用法详解
Dec 06 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
Uchome1.2 1.5 代码学习 common.php
2009/04/24 PHP
CodeIgniter启用缓存和清除缓存的方法
2014/06/12 PHP
Codeigniter控制器controller继承问题实例分析
2016/01/19 PHP
PHP7+Nginx的配置与安装教程详解
2016/05/10 PHP
PHP XML Expat解析器知识点总结
2019/02/15 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
将jQuery应用于login页面的问题及解决
2009/10/17 Javascript
jquery右下角弹出提示框示例代码
2013/10/08 Javascript
实例分析js和C#中使用正则表达式匹配a标签
2014/11/26 Javascript
谈谈AngularJs中的隐藏和显示
2015/12/09 Javascript
JavaScript生成二维码图片小结
2015/12/27 Javascript
Vue中定义全局变量与常量的各种方式详解
2017/08/23 Javascript
JavaScript数据类型的存储方法详解
2017/08/25 Javascript
利用vue + element实现表格分页和前端搜索的方法
2017/12/25 Javascript
JS闭包原理与应用经典示例
2018/12/20 Javascript
Angular PWA使用的Demo示例
2019/01/31 Javascript
Vue递归组件+Vuex开发树形组件Tree--递归组件的简单实现
2019/04/01 Javascript
viewer.js一个强大的基于jQuery的图像查看插件(支持旋转、缩放)
2020/04/01 jQuery
Python3指定路径寻找符合匹配模式文件
2015/05/22 Python
Python中文分词实现方法(安装pymmseg)
2016/06/14 Python
Python实现遍历目录的方法【测试可用】
2017/03/22 Python
tensorflow学习笔记之mnist的卷积神经网络实例
2018/04/15 Python
Python 保存矩阵为Excel的实现方法
2019/01/28 Python
python 实现检验33品种数据是否是正态分布
2019/12/09 Python
pyenv虚拟环境管理python多版本和软件库的方法
2019/12/26 Python
Python计算指定日期是今年的第几天(三种方法)
2020/03/26 Python
CSS3径向渐变之大鱼吃小鱼之孤单的大鱼
2016/04/26 HTML / CSS
输入一行文字,找出其中大写字母、小写字母、空格、数字、及其他字符各有多少
2016/04/15 面试题
Linux内核的同步机制是什么?主要有哪几种内核锁
2013/01/03 面试题
家教广告词
2014/03/19 职场文书
个人剖析材料范文
2014/09/30 职场文书
同意落户证明
2015/06/19 职场文书
正规欠条模板
2015/07/03 职场文书
科普 | 业余无线电知识-波段篇
2022/02/18 无线电
项目中Nginx多级代理是如何获取客户端的真实IP地址
2022/05/30 Servers
keepalived + nginx 实现高可用方案
2022/12/24 Servers