الفرق بين المراجعتين ل"Python/comparisons"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'تقدّم بايثون ثمان عمليات للمقارنة، وتمتلك جميعها نفس الأولوية (وهي أعلى من العمليات المنطقي...')
 
 
(3 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة)
سطر 1: سطر 1:
 +
<noinclude>{{DISPLAYTITLE:عمليات المقارنة في بايثون}}</noinclude>
 
تقدّم بايثون ثمان عمليات للمقارنة، وتمتلك جميعها نفس الأولوية (وهي أعلى من العمليات المنطقية). يلخّص الجدول التالي عمليات المقارنة المتوفّرة في بايثون:
 
تقدّم بايثون ثمان عمليات للمقارنة، وتمتلك جميعها نفس الأولوية (وهي أعلى من العمليات المنطقية). يلخّص الجدول التالي عمليات المقارنة المتوفّرة في بايثون:
 
{| class="wikitable"
 
{| class="wikitable"
سطر 39: سطر 40:
 
False
 
False
 
</syntaxhighlight>
 
</syntaxhighlight>
* يؤدي استخدام العوامل <code>‎<‎</code> و <code>‎<=‎</code> و <code>‎></code>‎ و <code>‎>=‎</code> إلى إطلاق استثناء من نوع <code>TypeError</code> عند مقارنة عدد مركب مع الأنواع العددية الأخرى، أو عندما تكون الكائنات المُقارن بينها ذات أنواع مختلفة لا يمكن عقد مقارنة بينها، أو في حالات أخرى حيث لا يكون هناك ترتيب معرّف.
+
* يؤدي استخدام العوامل <code>‎<‎</code> و <code>‎<=‎</code> و <code>‎></code>‎ و <code>‎>=‎</code> إلى إطلاق [[Python/exceptions|استثناء]] من نوع <code>[[Python/built-in exceptions#TypeError|TypeError]]</code> عند مقارنة عدد مركب مع الأنواع العددية الأخرى، أو عندما تكون الكائنات المُقارن بينها ذات أنواع مختلفة لا يمكن عقد مقارنة بينها، أو في حالات أخرى حيث لا يكون هناك ترتيب معرّف.
 
<syntaxhighlight lang="python3">
 
<syntaxhighlight lang="python3">
 
>>> x = "Hello"
 
>>> x = "Hello"
سطر 48: سطر 49:
 
TypeError: '<' not supported between instances of 'str' and 'int'
 
TypeError: '<' not supported between instances of 'str' and 'int'
 
</syntaxhighlight>
 
</syntaxhighlight>
* عادة ما تكون النسخ (instances) غير المتطابقة من الأصناف غير متساوية إلا إذا عرّف الصنف التابع <code>‎__eq__()‎</code>.
+
* عادة ما تكون النسخ (instances) غير المتطابقة من الأصناف غير متساوية إلا إذا عرَّف الصنفُ التابعَ <code>‎__eq__()‎</code>.
 
<syntaxhighlight lang="python3">
 
<syntaxhighlight lang="python3">
 
>>> class Person:
 
>>> class Person:
سطر 58: سطر 59:
 
False
 
False
  
</syntaxhighlight>لا يمكن تخصيص عمل العاملين <code>is</code> و <code>is not</code> ويمكن استخدامهما مع أي كائنين ولن يؤدي ذلك إلى إطلاق أي استثناء.<syntaxhighlight lang="python3">
+
</syntaxhighlight>
 +
* لا يمكن تخصيص عمل العاملين <code>is</code> و <code>is not</code> ويمكن استخدامهما مع أي كائنين ولن يؤدي ذلك إلى إطلاق أي [[Python/exceptions|استثناء]].
 +
<syntaxhighlight lang="python3">
 
>>> class Person:
 
>>> class Person:
 
...    pass
 
...    pass

المراجعة الحالية بتاريخ 15:00، 29 مايو 2018

تقدّم بايثون ثمان عمليات للمقارنة، وتمتلك جميعها نفس الأولوية (وهي أعلى من العمليات المنطقية). يلخّص الجدول التالي عمليات المقارنة المتوفّرة في بايثون:

العملية الوظيفة
‎<‎‎ أقل من
‎<=‎ أقل من أو يساوي
‎>‎ أكبر من
‎>=‎ أكبر من أو يساوي
== المساواة
‎!=‎ عدم المساواة
is هوية الكائن
is not نفي هوية الكائن

ملاحظات

  • يمكن ربط عمليات المقارنة بعضها ببعض حسب الحاجة، فعلى سبيل المثال العبارة x < y <= z مكافئة للعبارة x < y and y <= z، باستثناء أنّ y سيعالج مرة واحدة فقط (ولكن في كلتا الحالتين لن يُعالج z على الإطلاق عندما تؤول العبارة x < y إلى القيمة False). 
  • تكون جميع الكائنات ذات الأنواع المختلفة - باستثناء الأنواع العددية - غير متساوية دائمًا.
>>> x = "Hello"
>>> y = 2
>>> x == y
False
  • يؤدي استخدام العوامل ‎<‎ و ‎<=‎ و ‎>‎ و ‎>=‎ إلى إطلاق استثناء من نوع TypeError عند مقارنة عدد مركب مع الأنواع العددية الأخرى، أو عندما تكون الكائنات المُقارن بينها ذات أنواع مختلفة لا يمكن عقد مقارنة بينها، أو في حالات أخرى حيث لا يكون هناك ترتيب معرّف.
>>> x = "Hello"
>>> y = 2
>>> x < y
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: '<' not supported between instances of 'str' and 'int'
  • عادة ما تكون النسخ (instances) غير المتطابقة من الأصناف غير متساوية إلا إذا عرَّف الصنفُ التابعَ ‎__eq__()‎.
>>> class Person:
...     pass
... 
>>> p1 = Person()
>>> p2 = Person()
>>> p1 == p2
False
  • لا يمكن تخصيص عمل العاملين is و is not ويمكن استخدامهما مع أي كائنين ولن يؤدي ذلك إلى إطلاق أي استثناء.
>>> class Person:
...     pass
... 
>>> p1 = Person()
>>> p2 = Person()
>>> print (p1 is p2)
False
>>> print (p1 is not p2)
True

مصادر