gpt4 book ai didi

python 3 不确定行为

转载 作者:行者123 更新时间:2023-11-28 18:32:41 25 4
gpt4 key购买 nike

这是我第一次看到计算机程序的不确定响应到相同的输入,重复传递,而不显式调用任何随机性。

考虑以下名为 strange.py 的 python3 脚本:

#!/usr/bin/env python3 

def main():
opts_list=[['1', 'a'], ['2', 'b']]
opts_dict={}

for pair in opts_list:
opts_dict[pair[1]] = pair[0]

print( opts_dict )
return

main()

当脚本可执行时,从 shell 中运行多次

$ ./strange.py

有时得到 {'a': '1', 'b': '2'},其他时候得到 {'b': '2', 'a': '1'}。下面的 bash 命令序列将运行它 40 次并打印观察到的每个命令的计数:

$ rm -f tempfile ; for i in {1..40} ; do  ./strange.py >> tempfile ; done; echo "$( grep "a.*b" tempfile | wc -l ) a-b ordered pairs and $( grep "b.*a" tempfile | wc -l ) b-a ordered pairs in the 40 runs"

这对我来说似乎很奇怪。在 python 2 中没有观察到上述行为(只需使用 python 解释器而不是 python3 运行脚本),我在将旧脚本翻译为 python 3 时注意到了这一点。

出于某种原因,我想知道在 python3 中是否应该如此。

最佳答案

Python 最近添加了哈希随机化*

https://www.python.org/dev/peps/pep-0456/

它会影响 python3.4+ 但也可以在旧版本中启用

要禁用该功能(我们警告!!!)将环境变量 PYTHONHASHSEED 设置为某个固定值,您的输出每次都会相同

关于python 3 不确定行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35401169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com