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 globals()和locals()比较的更多相关文章
- Python globals和locals函数_reload函数
Python globals和locals函数_reload函数: globals( ): 返回所有能够访问到的全局名字 num = 5 sum = 0 def add(num): func_sum ...
- python globals和locals
文章里面说globals和locals函数返回的是命名空间 - 一个存有对应作用域的所有的变量.方法的字典,注意这里和dir函数返回数组的不一样 Python命名空间的本质 class Test(ob ...
- Python globals() locals() vars() 三个内建函数的区别
首先参考官方文档对这三个函数的介绍: 2. Built-in Functions – Python3.5 1.globals() 返回当前全局符号表, 通常是返回当前模块下的全局符号表, 比如全局内建 ...
- globals() 和 locals() 函数
globals() 和 locals() 函数 根据调用地方的不同,globals() 和 locals() 函数可被用来返回全局和局部命名空间里的名字. 如果在函数内部调用 locals(),返回的 ...
- Python globals() 函数
Python globals() 函数 Python 内置函数 描述 globals() 函数会以字典类型返回当前位置的全部全局变量. 语法 globals() 函数语法: globals() 参数 ...
- python基础----1. globals和locals
官方文档 globals """ Return a dictionary representing the current global symbol table. Th ...
- globals和locals的区别
Python的两个内置函数,locals 和globals,它们提供了基于字典的访问局部和全局变量的方式. 1.locals()是只读的.globals()不是.这里说的只读,是值对于原有变量的只读. ...
- python学习之locals()
locals() 返回一个字典对象.收集并返回局部变量.可以用在函数中,用来收集局部变量. >>> def f(): ... a = 'tom' ... print(locals() ...
- python基础全部知识点整理,超级全(20万字+)
目录 Python编程语言简介 https://www.cnblogs.com/hany-postq473111315/p/12256134.html Python环境搭建及中文编码 https:// ...
随机推荐
- 3 触发器报警-->远程执行命令
0.需求 上节课我们讲了,触发器报警,发送邮件,这节课主要讲下远程执行命令 流程图如下 item--> triggers-->action--->Email |——>远 ...
- 什么是favicon.ico?
㈠定义 ⑴所谓favicon,即Favorites Icon的缩写,顾名思义,便是其可以让浏览器的收藏夹中除显示相应的标题外,还以图标的方式区别不同的网站. ⑵根据浏览器的不同,Favicon显示也有 ...
- Python 特点
优点 简单 -- Python 是一种代表简单主义思想的语言.阅读一个良好的 Python 程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!Python 的这种伪代码本质是它最大的优点之一.它 ...
- http支持上传文件夹
核心原理: 该项目核心就是文件分块上传.前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题. * 如何分片: * 如何合成一个文件: * 中断了从哪个分片开 ...
- 51 Nod 1043 幸运号码(需重做好好体会)
转自:http://www.cnblogs.com/geloutingyu/p/6329594.html 一道非常好的dp题目. 1043 幸运号码 基准时间限制:1 秒 空间限制:131072 K ...
- CSS 中蒙版相关设置二三事
写 蒙版 时会使用透明度,第一反应会使用 opacity 但这个会使子元素继承,蒙版内还有内容会被影响,从而会设置 background 属性的 rgba 值. 需要注意的是 rgba 和 gba 颜 ...
- 消息模板-RabbitTemplate
RabbitTemplate是我们在与SpringAMQP整合的时候进行发送消息的关键类该类提供了丰富的发送消息的方法,包括可靠性消息投递.回调监听消息接口ConfirmCallback.返回值确认接 ...
- 基于libcurl的restfull接口 post posts get gets
头文件 #pragma once #ifndef __HTTP_CURL_H__ #define __HTTP_CURL_H__ #include <string> #include &q ...
- 苹果应用(.ipa)打包和上传,不用通过苹果商店即可用
签名工具: appuploader(.p12:.cer) 打包平台: http://www.lbuilder.com(收费) 上传平台: http://www.58apk.com (每日50次下载,加 ...
- Spring核心内容-认识bean