与Python 3.3开始,哈希算法是不确定性腌避免某种攻击.这对于Web服务器来说很好,但是在尝试调试程序时会很痛苦:每次运行脚本时,dict内容都会以不同的顺序迭代.
一些早期版本的python有一个-R用于启用散列随机化的标志,但现在它是默认行为,该标志尚未被其相反的替换.可以通过设置环境变量来禁用随机化PYTHONHASHSEED:
PYTHONHASHSEED
如果未将此变量设置或设置为random,则使用随机值为str,bytes和datetime对象的哈希值设定种子.
如果将PYTHONHASHSEED设置为整数值,则将其用作固定种子,以生成散列随机化所涵盖类型的散列().
问题是必须在启动python进程之前设置此变量.我试着与设置os.putenv(),或在os.environ,但这些似乎都对散列方法没有效果.这并不太令人惊讶:我不希望python在每一组或字典查找之前检查环境!所以,问题仍然存在:
有没有办法让python程序禁用自己的哈希随机化?
如文档中所述,random.random将"返回[0.0,1.0]范围内的下一个随机浮点数"
那么它返回0的几率是多少?