Python 解释locals()及其工作原理
有人能解释一下这段代码是如何工作的吗Python 解释locals()及其工作原理,python,python-2.7,locals,Python,Python 2.7,Locals,有人能解释一下这段代码是如何工作的吗 info = {} info.update(locals()) info.pop('self', None) info.pop('info', None) 我在假设,如果我错了,请纠正我,但它获取当前函数中的所有变量,并将它们放入dict,然后删除self和它放入的dict,对吗?除了赛尔夫和格言之外,还有什么我不想说的吗 将dict序列化并发布会有什么问题吗?这可能来自于。其思想是在函数中填充许多变量,并使用locals()将它们传递给模板。它省去了创建
info = {}
info.update(locals())
info.pop('self', None)
info.pop('info', None)
我在假设,如果我错了,请纠正我,但它获取当前函数中的所有变量,并将它们放入dict,然后删除self和它放入的dict,对吗?除了赛尔夫和格言之外,还有什么我不想说的吗
将dict序列化并发布会有什么问题吗?这可能来自于。其思想是在函数中填充许多变量,并使用
locals()
将它们传递给模板。它省去了创建包含所有这些变量的新词典的工作量
具体地说,您的代码创建了一个包含所有局部变量的字典,并删除了self
(类对象参数)和info
(刚刚创建的变量)。将返回所有其他局部变量
然后,只要数据可以序列化,就可以对数据进行JSON序列化。例如,必须首先将日期时间变量转换为字符串。这可能来自。其思想是在函数中填充许多变量,并使用
locals()
将它们传递给模板。它省去了创建包含所有这些变量的新词典的工作量
具体地说,您的代码创建了一个包含所有局部变量的字典,并删除了self
(类对象参数)和info
(刚刚创建的变量)。将返回所有其他局部变量
然后,只要数据可以序列化,就可以对数据进行JSON序列化。例如,必须首先将日期时间变量转换为字符串。这可能来自。其思想是在函数中填充许多变量,并使用
locals()
将它们传递给模板。它省去了创建包含所有这些变量的新词典的工作量
具体地说,您的代码创建了一个包含所有局部变量的字典,并删除了self
(类对象参数)和info
(刚刚创建的变量)。将返回所有其他局部变量
然后,只要数据可以序列化,就可以对数据进行JSON序列化。例如,必须首先将日期时间变量转换为字符串。这可能来自。其思想是在函数中填充许多变量,并使用
locals()
将它们传递给模板。它省去了创建包含所有这些变量的新词典的工作量
具体地说,您的代码创建了一个包含所有局部变量的字典,并删除了self
(类对象参数)和info
(刚刚创建的变量)。将返回所有其他局部变量
然后,只要数据可以序列化,就可以对数据进行JSON序列化。例如,日期时间变量必须首先转换为字符串。代码创建一个名为“info”的新字典,并将所有本地python变量分配给它。注意:这些是指向本地环境中相同对象的指针,因此,如果您在
info
中修改列表或词典,它也将在您的环境中更改(这可能是或可能不是所需的行为)
更新并返回表示当前本地
符号表。自由变量在被调用时由locals()返回
在功能块中调用,但不在类块中调用
注:本词典内容不得修改;变化
可能不会影响应用程序使用的本地变量和自由变量的值
翻译
info.pop('self',None)
和info.pop('info',None)
将分别从新的info
词典中删除'self'和'info'。如果它们不存在,则返回None
。请注意,info.pop('self')
如果字典中没有'self',将返回一个KeyError。代码创建一个名为'info'的新字典,并将所有本地python变量分配给它。注意:这些是指向本地环境中相同对象的指针,因此,如果您在info
中修改列表或词典,它也将在您的环境中更改(这可能是或可能不是所需的行为)
更新并返回表示当前本地
符号表。自由变量在被调用时由locals()返回
在功能块中调用,但不在类块中调用
注:本词典内容不得修改;变化
可能不会影响应用程序使用的本地变量和自由变量的值
翻译
info.pop('self',None)
和info.pop('info',None)
将分别从新的info
词典中删除'self'和'info'。如果它们不存在,则返回None
。请注意,info.pop('self')
如果字典中没有'self',将返回一个KeyError。代码创建一个名为'info'的新字典,并将所有本地python变量分配给它。注意:这些是指向本地环境中相同对象的指针,因此,如果您在info
中修改列表或词典,它也将在您的环境中更改(这可能是或可能不是所需的行为)
更新并返回表示当前本地
符号表。自由变量在被调用时由locals()返回
在功能块中调用,但不在类块中调用
注:本词典内容不得修改;变化
可能不会影响应用程序使用的本地变量和自由变量的值
翻译
info.pop('self',None)
和info.pop('info',None)
将分别从新的info
词典中删除'self'和'info'。如果它们不存在,则返回None<