Python 3.3에서 사전 순서 지정이 비결정적인 이유는 무엇입니까?
3.3 이전 Python 버전에서는 사전 키 순서가 임의적이었지만 일관된. 그러나 Python 3.3에서는 이 순서가 비결정적이었습니다.
이 변경 사항은 2012년에 구현된 보안 수정으로 인해 발생했으며 Python 3.3에서는 기본적으로 활성화되었습니다. 보안 취약성을 해결하기 위해 도입된 해시 무작위화로 인해 사전 및 세트의 반복 순서가 예측 불가능해지고 Python 실행마다 달라지게 됩니다.
해시 무작위화를 비활성화하려면 PYTHONHASHSEED 환경 변수를 0으로 설정할 수 있습니다.
반직관적인 예
질문에 있는 반직관적인 예는 Python 3.3에서 일관되게 동일한 결과를 산출하지 않으며, 제한된 수의 다른 순서 지정은 해시 충돌 처리에서 비롯됩니다.
이 제한은 Python 3.6 및 이후 버전에서는 더 이상 존재하지 않습니다. 항상 보존됩니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3