تقنية

array في بايثون: لماذا ترفض الإضافة مع بقاء العرض؟

استبدال ناجح وإضافة مرفوضة
العرض. [1] [2]

منع تغيير الحجم لا يجمد القيم. [1] [2]

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

وجود العرض يمنع إضافة عنصر إلى array هنا، لكنه يسمح باستبدال عنصر. [1] [2]

  • أنشأنا [4,7] وعرضًا للمصفوفة. [1] [2]
  • تعيين العنصر الأول إلى 9 ينجح. [1] [2]
  • الإضافة ترفع BufferError دون تغيير الحجم. [1] [2]
  • بعد تحرير العرض تنجح الإضافة: [9,7,2]. [1] [2]
  • اختبرنا 3.12.14 وعرضًا واحدًا. [1] [2]

المثال

from array import array
a=array('i',[4,7])
view=memoryview(a)
a[0]=9
try:
    a.append(2)
except BufferError:
    print('BufferError')
view.release()
a.append(2)
print(a.tolist())

[1] [2]

القيمة والحجم

المصدر هنا يرفض تغيير الحجم مع مخزن مصدر للعرض. a[0]=9 لا يزيد عدد العناصر؛ append يزيده. المخرجان BufferError ثم [9,7,2]. [1] [2]

تحرير العرض ثم إضافة ناجحة
التحرير. [1] [2]

النطاق

حررنا العرض الوحيد، لا المصفوفة. إذا بقي عرض آخر أو شريحة عرض، فقد يستمر المنع. المثال لمصفوفة صحيحة أحادية البعد؛ لا نقيس الأداء أو نختبر مخازن أخرى. [1] [2]

المراجع

  1. Python 3.12: memoryview and release
  2. CPython 3.12.14: arraymodule.c
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

للتوسع: بحث عن لغات البرمجة

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