Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah Kamus Memesan Bukan Deterministik Post-Python 3.3?

Mengapakah Kamus Memesan Bukan Deterministik Post-Python 3.3?

Linda Hamilton
Linda Hamiltonasal
2024-10-21 15:22:02332semak imbas

Why Is Dictionary Ordering Non-Deterministic Post-Python 3.3?

Mengapa Pesanan Kamus Tidak Tentu dalam Python 3.3?

Dalam versi Python sebelum 3.3, susunan kekunci kamus adalah sewenang-wenangnya tetapi konsisten. Walau bagaimanapun, dalam Python 3.3, pesanan ini menjadi bukan deterministik.

Perubahan ini terhasil daripada pembetulan keselamatan yang dilaksanakan pada tahun 2012 dan didayakan secara lalai dalam Python 3.3. Rawak cincang, yang diperkenalkan untuk menangani kelemahan keselamatan, menyebabkan susunan lelaran kamus dan set menjadi tidak dapat diramalkan dan berbeza merentas larian Python.

Untuk melumpuhkan rawak cincang, anda boleh menetapkan pembolehubah persekitaran PYTHONHASHSEED kepada 0.

Contoh Kontrantuitif

Walaupun contoh balas dalam soalan tidak konsisten menghasilkan hasil yang sama dalam Python 3.3, bilangan pesanan berbeza yang terhad berpunca daripada pengendalian perlanggaran cincang.

Had ini tidak lagi terdapat dalam Python 3.6 dan versi yang lebih baru, di mana susunan sisipan kamus sentiasa dipelihara.

Atas ialah kandungan terperinci Mengapakah Kamus Memesan Bukan Deterministik Post-Python 3.3?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn