繁体   English   中英

解释locals()及其工作原理

[英]Explain locals() and exactly how it works

有人可以解释一下这小段代码如何工作吗?

info = {}
info.update(locals())
info.pop('self', None)
info.pop('info', None)

我是假设的人,如果我错了,请纠正我,但是它会获取当前函数中的所有变量,然后将它们放在dict中,并删除self和它放入的dict,对吗? 除了自我和我可能不想去的字典,还有别的吗?

仅用JSON序列化该字典并将其发布会有什么问题吗?

这可能来自Django模板和本地技巧 这个想法是在函数内部填充多个变量,然后使用locals()将它们传递给模板。 它节省了使用所有这些变量创建新字典的工作。

具体来说,您的代码创建了所有局部变量的字典,并删除了self (类对象参数)和info (刚刚创建的变量)。 返回所有其他局部变量。

然后,只要可以序列化数据,就可以对数据进行JSON序列化。 例如,必须先将DateTime变量转换为字符串。

该代码创建了一个名为'info'的新字典,并将所有本地python变量分配给它。 注意:这些是指向同一个对象在本地环境,因此,如果您修改列表或字典info将在您的环境中也改变了(这可能是也可能不是所期望的行为)。

locals()更新并返回代表当前本地符号表的字典。 当在功能块中调用免费变量时,它是由locals()返回的,而不是在类块中调用。

注意:此字典的内容不应修改; 更改可能不会影响解释器使用的局部变量和自由变量的值。

info.pop('self', None)info.pop('info', None)将从您的新info字典中分别删除'self'和'info'。 如果不存在,则返回None 请注意,如果字典中未info.pop('self')info.pop('self')将返回info.pop('self')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM