اذهب إلى المحتوى

السؤال

Recommended Posts

  • 1
نشر

مرحبا مرام
يقارن عامل المساواة (==) قيم كل من المعاملات ويتحقق من تساوي القيمة. أما العامل "is" يتحقق مما إذا كان كلا المعاملين يشيران إلى نفس الكائن أم لا, لنشرح ذلك بمثال

list1 = []
list2 = []


//المقارنة الأولى
 
if (list1 == list2):
    print("True")
else:
    print("False")
    
    
 //المقارنة الثانية
if (list1 is list2):
    print("True")
else:
    print("False")
    

في المقارنة الأولى نقارن هل قيمة list1 هي نفسها قيمة list2, سوف يطبع true لأن القيم بالفعل متساوية
في المقارنة الثانية نقارن هل list1 يشير الى نفس الكائن الذي يشير اليه list2 , بالطبع لا فسوف يطبع false
شكرا لك

  • 0
نشر

في لغة بايثون يتم استخدام المعامل == للتأكد من تطابق قيمة متغيرين فهي تعيد true عند تساوي القيمتين اللتين نطبق عليهما هذا الشرط.

يمكن استخدام == لمقارنة قيمتين لمتغيرات أو أغراض variable | Objects.

أما الكلمة المفتاحية is تستعمل عندما نريد التأكد أن المتغيران يشيران لنفس العنوان في الذاكرة (أي لهما نفس القيمة و تعديل أحدهما يسبب تعديل الآخر).

== تعيد true في جميع الحالات التي تكون القيمتين متساويتين، أما is تعيد true فقط في حال كان طرفي المقارنة يشيران لنفس الكينونة | الكيان (نفس الغرض) | نفس عنوان الذاكرة.

1==True   => returns True,

but 

1 is True => returns False

======

أمثلة:

# python3 code to
# illustrate the
# difference between
# == and is operator
# [] is an empty list

list1 = []
list2 = []
list3=list1
 
if (list1 == list2):  # true نفس القيمة 

 
if (list1 is list2):  # false غرضين مختلفين

 
if (list1 is list3):  # true نفس الغرض

 
list3 = list3 + list2
  
if (list1 is list3):  # false أصبحا غرضين مختلفين

عند تعريف قائمتين :

list1 = []
list2 = []
 
print(id(list1))
print(id(list2))

# output
139877155242696
139877155253640

وباستخدام الدالة id التي تعيد المعرف الخاص بكل غرض، نلاحظ أنهما مختلفتين.. لذلك is تعيد false فهما فعلياً ليسا نفس الغرض

عملية الإسناد في المثال السابق 

list3 = list1

أدت لأن تأخذ القائمة 3 عنوان و قيمة القائمة الأولى لذلك هما متطابقتين وليس فقط متساويتين بالقيمة لذلك is تعيد true في هذه الحالة.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...