"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا يعتبر ترتيب القاموس غير حتمي لما بعد بايثون 3.3؟

لماذا يعتبر ترتيب القاموس غير حتمي لما بعد بايثون 3.3؟

تم النشر بتاريخ 2024-11-10
تصفح:490

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

لماذا ترتيب القاموس غير حتمي في Python 3.3؟

في إصدارات Python السابقة للإصدار 3.3، كان ترتيب مفاتيح القاموس عشوائيًا ولكن ثابت. ومع ذلك، في Python 3.3، أصبح هذا الترتيب غير حتمي.

ينتج هذا التغيير عن إصلاح أمني تم تنفيذه في عام 2012 وتم تمكينه افتراضيًا في Python 3.3. العشوائية التجزئة، المقدمة لمعالجة الثغرات الأمنية، تتسبب في عدم القدرة على التنبؤ بترتيب التكرار للقواميس والمجموعات والاختلاف عبر تشغيل بايثون.

لتعطيل العشوائية التجزئة، يمكنك تعيين متغير البيئة PYTHONHASHSEED إلى 0.

مثال غير بديهي

بينما المثال المضاد في السؤال لا يؤدي دائمًا إلى نفس النتيجة في Python 3.3، حيث أن العدد المحدود من الطلبات المختلفة ينبع من التعامل مع تصادمات التجزئة.

لم يعد هذا القيد موجودًا في Python 3.6 والإصدارات الأحدث، حيث يكون ترتيب الإدراج لـ القواميس محفوظة دائمًا.

بيان الافراج أعيد طبع هذه المقالة على: 1729494257 في حالة وجود أي مخالفة، يرجى التواصل مع [email protected] لحذفها
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3