العوامل التي تستخدم لمعرفة ما إذا كان الكائنين يشيران لكائن واحد في الذاكرة أم لا ( is not ) في بايثون 

امثله في العوامل التي تستخدم لمعرفة ما إذا كان الكائنين يشيران لكائن واحد في الذاكرة أم لا في بايثون

 معرفة عنوان المتغير أو الكائن في الذاكرة في بايثون

لمعرفة المكان أو العنوان المحجوز في الذاكرة لأي شيء تم تعريفه يمكنك إستخدام الدالة id().
بكل بساطة قم بوضع إسم أي متغير أو كائن بداخلها و سترجع لك عدد صحيح يمثل عنوانه في الذاكرة.

Examples are the operators used to find out whether the two objects refer to a single object in memory or not in Python How to know the address of a variable or object in memory in Python To find out the reserved location or address in memory for anything that has been defined, you can use the id () function. Simply put the name of any variable or object inside it, and it will return to you an integer representing its address in memory.

المثال الأول

Test.py
        # هنا قمنا بتعريف متغيران عندهم قيم مختلفة
        x = 3
        y = 7

        # هنا قمنا بطباعة عناوينهم في الذاكرة
        print('x address is:', id(x))
        print('y address is:', id(y))
      

سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.

x address is: 1537266768
y address is: 1537266832

نلاحظ أن عنوان المتغير x مختلف عن عنوان المتغير y و بالتالي هذا يعني أنه تم حجز مساحة خاصة لكل واحد منهما و أنهما يشيران لمكانين مختلفين في الذاكرة.


ملاحظة

في حال قمت بتعريف متغيران أو أكثر و أعطيتهم نفس القيمة, فإن مفسّر لغة بايثون سيحجز مكان واحد لهم و يضع فيه القيمة حتى يوّفر في استهلاك مساحة الذاكرة.

Note If you define two or more variables and give them the same value, the Python interpreter will reserve one place for them and place the value in it in order to save memory space consumption.

المثال الثاني

Test.py
        # هنا قمنا بتعريف متغيران عندهم قيم مختلفة
        x = 5
        y = 5

        # هنا قمنا بطباعة عناوينهم في الذاكرة
        print('x address is:', id(x))
        print('y address is:', id(y))
      

سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.

x address is: 1833030700
y address is: 1833030700

نلاحظ أن عنوان المتغير x هو نفسه عن عنوان المتغير y و بالتالي هذا يعني أنه تم حجز مساحة واحدة لكلا المتغيرين و أنهما يشيران إلى نفس المكان في الذاكرة.

العامل is (Is Operator)

العامل is يستخدم لمعرفة ما إذا كان الكائنين يشيران لكائن واحد في الذاكرة أم لا.

  • إذا كانا يشيران لنفس الكائن فإنه يرجع الجواب True.

  • إذا كانا لا يشيران لنفس الكائن فإنه يرجع الجواب False.


مثال

Test.py
        # هنا قمنا بتعريف مصفوفتين عندهما نفس الحجم و وضعنا فيهما نفس القيم
        A = [1, 2, 3]
        B = [1, 2, 3]

        # في الذاكرة B و A هنا قمنا بطباعة عنوان المصفوفتان
        print('A address is:', id(A))
        print('B address is:', id(B))

        # يشيران لكائن واحد في الذاكرة ( أي لعنوان واحد ) سيتم تنفيذ أمر الطباعة B و A إذا كان
        if A is B:
        print('A and B have the same ID')
      

سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.

A address is: 36662848
B address is: 36563624

نلاحظ أن عنوان المصفوفة A مختلف عن عنوان المصفوفة B و بالتالي إنهما لا يشيران لمكان واحد في الذاكرة.
لهذا السبب لم يتم تنفيذ أمر الطباعة الأخير الموضوع داخل الشرط و الذي كان سيتنفذ في حال كان A و B يشيران لنفس المصفوفة في الذاكرة.

العامل is not (Is Not Operator)

العامل is not يستخدم لمعرفة ما إذا كان الكائنين لا يشيران لكائن واحد في الذاكرة أم لا.

  • إذا كانا لا يشيران لنفس الكائن فإنه يرجع الجواب True.

  • إذا كانا يشيران لنفس الكائن فإنه يرجع الجواب False.


مثال

Test.py
        # هنا قمنا بتعريف مصفوفتين عندهما نفس الحجم و وضعنا فيهما نفس القيم
        A = [1, 2, 3]
        B = [1, 2, 3]

        # في الذاكرة B و A هنا قمنا بطباعة عنوان المصفوفتان
        print('A address is:', id(A))
        print('B address is:', id(B))

        # لا يشيران لكائن واحد في الذاكرة ( أي لعنوان واحد ) سيتم تنفيذ أمر الطباعة B و A إذا كان
        if A is not B:
        print('A and B have different IDs')
      

سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.

A address is: 5992000
B address is: 5892776
A and B have different IDs

نلاحظ أن عنوان المصفوفة A مختلف عن عنوان المصفوفة B و بالتالي إنهما لا يشيران لمكان واحد في الذاكرة.
لهذا السبب تم تنفيذ أمر الطباعة الأخير الموضوع داخل الشرط.

تعليقات