هل "الإملاء المجمد" ممكن في بايثون؟
لقد كان مفهوم "الإملاء المجمد" موضوعًا للمناقشة داخل مجتمع بايثون. على الرغم من أن بايثون لا توفر إملاءًا مجمدًا مدمجًا، فقد ظهرت العديد من الحلول لتلبية الحاجة إلى قاموس غير قابل للتغيير وقابل للتجزئة.
أحد الأسباب الشائعة للرغبة في الإملاء المجمد هو حفظ استدعاءات الوظائف باستخدام وسائط غير معروفة. يتضمن الأسلوب النموذجي تحويل الوسيطات إلى صف باستخدام tuple(sorted(kwargs.items()))، والاعتماد على استقرار الفرز للبحث في جدول التجزئة.
للحصول على نهج أكثر شمولاً، فكر في فئة FrozenDict التالية:
import collections
class FrozenDict(collections.Mapping):
...
توفر هذه الفئة طرقًا للتكرار، وتحديد الطول، واسترجاع العناصر، وحساب التجزئة، مما يضمن أنه يتصرف مثل القاموس القياسي ويدعم التجزئة.
من الناحية العملية، يعمل FrozenDict بكفاءة :
x = FrozenDict(a=1, b=2)
y = FrozenDict(a=1, b=2)
print(x is y, x == y, x == {'a': 1, 'b': 2})
d = {x: 'foo'}
print(d[y]) # 'foo'
من خلال توفير تطبيق مخصص، يسمح FrozenDict بقواميس غير قابلة للتغيير وقابلة للتجزئة في Python، مما يوسع إمكانيات التعامل مع الكائنات وتحسين الذاكرة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3