【发布时间】:2015-12-10 18:57:26
【问题描述】:
我是出于好奇而问这个问题(具体来说,是为了深入了解 python 在后台是如何工作的)。
我完全知道pythondict对象是无序的——你可以放入一堆项目,并打印出dict的一些表示,表示中项目的排序将没有对应关系按照输入项目的顺序。
然而,我很好奇的是,为什么顺序会从一次执行代码更改为下一次执行?
我有一个非常简单的 python 脚本,可以将dict 打印到控制台。 dict 看起来像这样(内容无关紧要):
{
'hello': 'hi',
'goodbye': 'bye',
'hahaha': 'lol',
}
将其打印到控制台会导致项目不仅以随机顺序打印,而且每次运行程序时都会以不同的顺序打印。这是我的问题:为什么会这样?
注意:python 代码位于 django 项目中(但在这种情况下我没有使用任何 django 功能 - 只是提到它以防万一相关)。
【问题讨论】:
-
Python 2 还是 Python 3?您可能遇到了哈希随机化,在这种情况下,this 将是一个合适的欺骗目标。
-
这在 python2 中不会发生。
-
Python 3?您的意思是“操作系统(Windows、Linux/MacOS、Android、iOS...)和/或实现(CPython/PyPi)之间的变量”吗?这是一个很好的问题,但请补充细节!
-
@sudomakeinstall2 - 如果您愿意,可以通过设置环境变量
export PYTHONHASHSEED=random在 python 2.7 中启用它。 -
@tdelaney:有没有更多的 Pythonic 方式/包来获得 Python 2.x 中的向后兼容性?