تقنية

memoryview في بايثون: هل هوية الكائن تضمن مساواته بنفسه؟

العرض نفسه؛ v is v تعطي True.
الهوية.

هوية عرض memoryview لا تضمن نجاح المساواة. [1]

الخلاصة السريعة

لا؛ v==v قد تعطي False لصيغة غير مدعومة. [1]

  • هوية عرض memoryview لا تضمن نجاح المساواة. [1]
  • إذا كانت صيغة أي طرف لا تدعمها struct، فالمقارنة غير متساوية، حتى مع المحتوى نفسه. [1]
  • مثال مؤلف على CPython 3.12.14 في Windows: C ترث BigEndianStructure بحقل n من c_long؛ v=memoryview(C(7)). [1]
  • v.format هي "T{>l:n:}"؛ v is v تعطي True؛ v==v تعطي False. [1]
  • تحكم: v.cast("B")==v.cast("B") تعطي True؛ صيغة العرضين B؛ قيمة n بقيت 7. [1]

هوية ومساواة

هوية عرض memoryview لا تضمن نجاح المساواة. [1]

الصيغة غير المدعومة

إذا كانت صيغة أي طرف لا تدعمها struct، فالمقارنة غير متساوية، حتى مع المحتوى نفسه. [1]

بنية وعرض

مثال مؤلف على CPython 3.12.14 في Windows: C ترث BigEndianStructure بحقل n من c_long؛ v=memoryview(C(7)). [1]

from ctypes import BigEndianStructure, c_long class C(BigEndianStructure): _fields_=[("n",c_long)] v=memoryview(C(7)) [1]

v==v تعطي False؛ مقارنة عرضي البايتات تعطي True.
المساواة.

النتيجة والتحكم

v.format هي "T{>l:n:}"؛ v is v تعطي True؛ v==v تعطي False. [1]

v==v -> False [1]

تحكم: v.cast("B")==v.cast("B") تعطي True؛ صيغة العرضين B؛ قيمة n بقيت 7. [1]

المراجع

  1. Python — memoryview equality

للتوسع: لغات البرمجة.

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.