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实现爬虫统计学校BBS男女比例之多线程爬虫(二)
Dec 31 Python
举例讲解Python中字典的合并值相加与异或对比
Jun 04 Python
python网络爬虫之如何伪装逃过反爬虫程序的方法
Nov 23 Python
详解python字节码
Feb 07 Python
Python读取txt内容写入xls格式excel中的方法
Oct 11 Python
Python使用folium excel绘制point
Jan 03 Python
Python for循环与range函数的使用详解
Mar 23 Python
python中的单引号双引号区别知识点总结
Jun 23 Python
python 设置输出图像的像素大小方法
Jul 04 Python
python二元表达式用法
Dec 04 Python
python递归函数用法详解
Oct 26 Python
pycharm使用技巧之自动调整代码格式总结
Nov 04 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图片验证码代码
2008/03/27 PHP
php通过array_merge()函数合并两个数组的方法
2015/03/18 PHP
PHP中对数组的一些常用的增、删、插操作函数总结
2015/11/27 PHP
Smarty模板类内部原理实例分析
2019/07/03 PHP
为你的 Laravel 验证器加上多验证场景的实现
2020/04/07 PHP
简单的邮箱登陆的提示效果类似于yahoo邮箱
2014/02/26 Javascript
使用iframe window的scroll方法控制iframe页面滚动
2014/03/05 Javascript
js获取 type=radio 值的方法
2014/05/09 Javascript
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
javacript使用break内层跳出外层循环分析
2015/01/12 Javascript
js 判断一组日期是否是连续的简单实例
2016/07/11 Javascript
easyUI实现类似搜索框关键词自动提示功能示例代码
2016/12/27 Javascript
js/jq仿window文件夹移动/剪切/复制等操作代码
2017/03/08 Javascript
详解Angular 自定义结构指令
2017/06/21 Javascript
vue.js开发实现全局调用的MessageBox组件实例代码
2017/11/22 Javascript
vue车牌号校验和银行校验实战
2019/01/23 Javascript
vue 使用axios 数据请求第三方插件的使用教程详解
2019/07/05 Javascript
微信小程序通过一个json实现分享朋友圈图片
2019/09/03 Javascript
Python获取脚本所在目录的正确方法
2014/04/15 Python
使用apidocJs快速生成在线文档的实例讲解
2018/02/07 Python
mvc框架打造笔记之wsgi协议的优缺点以及接口实现
2018/08/01 Python
Python实现删除排序数组中重复项的两种方法示例
2019/01/31 Python
Django admin禁用编辑链接和添加删除操作详解
2019/11/15 Python
Python map及filter函数使用方法解析
2020/08/06 Python
python 利用zmail库发送邮件
2020/09/11 Python
记一次高分屏下canvas模糊问题
2020/02/17 HTML / CSS
NUK奶瓶美国官网:NUK美国
2016/09/26 全球购物
花卉与景观设计系大学生求职信
2013/10/01 职场文书
二年级小学生评语
2014/04/21 职场文书
我爱我家教学反思
2014/05/01 职场文书
计算机相关专业自荐信
2014/07/02 职场文书
Jsonp劫持学习
2021/04/01 PHP
Python机器学习之基础概述
2021/05/19 Python
python for循环赋值问题
2021/06/03 Python
详解Vue router路由
2021/11/20 Vue.js
python神经网络学习 使用Keras进行简单分类
2022/05/04 Python