بايثونالعوامل التي تستخدم لمعرفة ما إذا كان الكائنين يشيران لكائن واحد في الذاكرة أم لا
- طريقة معرفة عنوان المتغير أو الكائن في الذاكرة
- العامل is (Is Operator)
- العامل is not (Is Not Operator)
طريقة معرفة عنوان المتغير أو الكائن في الذاكرة
لمعرفة المكان أو العنوان المحجوز في الذاكرة لأي شيء تم تعريفه يمكنك إستخدام الدالة id().
بكل بساطة قم بوضع إسم أي متغير أو كائن بداخلها و سترجع لك عدد صحيح يمثل عنوانه في الذاكرة.
المثال الأول
سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.
y address is: 1537266832
نلاحظ أن عنوان المتغير x
مختلف عن عنوان المتغير y
و بالتالي هذا يعني أنه تم حجز مساحة خاصة لكل واحد منهما و أنهما يشيران لمكانين مختلفين في الذاكرة.
في حال قمت بتعريف متغيران أو أكثر و أعطيتهم نفس القيمة, فإن مفسّر لغة بايثون سيحجز مكان واحد لهم و يضع فيه القيمة حتى يوّفر في استهلاك مساحة الذاكرة.
المثال الثاني
سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.
y address is: 1833030700
نلاحظ أن عنوان المتغير x
هو نفسه عن عنوان المتغير y
و بالتالي هذا يعني أنه تم حجز مساحة واحدة لكلا المتغيرين و أنهما يشيران إلى نفس المكان في الذاكرة.
العامل is (Is Operator)
العامل is يستخدم لمعرفة ما إذا كان الكائنين يشيران لكائن واحد في الذاكرة أم لا.
- إذا كانا يشيران لنفس الكائن فإنه يرجع الجواب True.
- إذا كانا لا يشيران لنفس الكائن فإنه يرجع الجواب False.
مثال
سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.
B address is: 36563624
نلاحظ أن عنوان المصفوفة A
مختلف عن عنوان المصفوفة B
و بالتالي إنهما لا يشيران لمكان واحد في الذاكرة.
لهذا السبب لم يتم تنفيذ أمر الطباعة الأخير الموضوع داخل الشرط و الذي كان سيتنفذ في حال كان A
و B
يشيران لنفس المصفوفة في الذاكرة.
العامل is not (Is Not Operator)
العامل is not يستخدم لمعرفة ما إذا كان الكائنين لا يشيران لكائن واحد في الذاكرة أم لا.
- إذا كانا لا يشيران لنفس الكائن فإنه يرجع الجواب True.
- إذا كانا يشيران لنفس الكائن فإنه يرجع الجواب False.
مثال
سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.
B address is: 5892776
A and B have different IDs
نلاحظ أن عنوان المصفوفة A
مختلف عن عنوان المصفوفة B
و بالتالي إنهما لا يشيران لمكان واحد في الذاكرة.
لهذا السبب تم تنفيذ أمر الطباعة الأخير الموضوع داخل الشرط.