有人能解释一下这段代码的工作原理吗?解释当地人()以及它究竟是如何工作的
info = {}
info.update(locals())
info.pop('self', None)
info.pop('info', None)
我假设,并请纠正我,如果我错了,但它可以让所有的变量在当前函数,并把他们的字典,并删除自身,并得到了放在字典,对吗?除了自我之外,还有别的什么,我可能不想进入那里?
只有JSON序列化该字典并发布它会有什么问题吗?
有人能解释一下这段代码的工作原理吗?解释当地人()以及它究竟是如何工作的
info = {}
info.update(locals())
info.pop('self', None)
info.pop('info', None)
我假设,并请纠正我,如果我错了,但它可以让所有的变量在当前函数,并把他们的字典,并删除自身,并得到了放在字典,对吗?除了自我之外,还有别的什么,我可能不想进入那里?
只有JSON序列化该字典并发布它会有什么问题吗?
这可能来自Django template and the locals trick。这个想法是在函数内部填充一些变量,并使用locals()
将它们传递给模板。它节省了用所有这些变量创建一个新字典的努力。
具体而言,您的代码将创建一个包含所有局部变量的字典,并删除self
(类对象参数)和info
(刚创建的变量)。所有其他本地变量都会返回。
只要数据可以被序列化,您就可以JSON序列化数据。例如,DateTime变量必须首先转换为字符串。
好的,谢谢你一堆 – electrometro
该代码创建一个名为'info'的新字典,并将它的所有本地python变量赋值给它。注意:这些是指向本地环境中相同对象的指针,因此如果您修改了info
中的列表或字典,它也会在您的环境中更改(这可能是也可能不是所需的行为)。
locals() 更新,并返回来表示当前本地 符号表的字典。当函数块调用 时,自由变量由locals()返回,但不在类块中调用。
注意:本词典的内容不应修改; 的更改可能不会影响解释器使用的本地和自由变量的值。
info.pop('self', None)
和info.pop('info', None)
将您的新info
词典中删除 '自我' 和 '信息',分别。如果他们不在场,他们会返回None
。请注意,如果'self'不在字典中,info.pop('self')
将返回一个KeyError。
取决于什么是在那里......也许你可以序列化它,只要所有的项目都可以序列化 –