العمليات المنطقية في بايثون
< Python
تقدّم بايثون ثلاث عمليات منطقية، وهي مرتبة في الجدول التالي حسب أولويتها ترتيبًا تصاعديًا:
| العامل | النتيجة | ملاحظات |
|---|---|---|
x or y
|
إذا كان x خطأً، فعالج y، وإلا عالج x
|
هذا العامل ذو دارة قصيرة (short-circuit operator)؛ لذا فإنّه يعالج الوسيط الثاني فقط عندما يكون الوسيط الأول خطأً. |
x and y
|
إذا كان x خطأً، فعالج x، وإلا عالج y
|
هذا العامل ذو دارة قصيرة (short-circuit operator)؛ لذا فإنّه يعالج الوسيط الثاني فقط عندما يكون الوسيط الأول صحيحًا. |
not x
|
إذا كان x خطأً، فالنتيجة True، وإلا False.
|
يمتلك العامل not أولوية أدنى من العوامل غير المنطقية، لذا فإنّ العبارة not a == b ستفسّر إلى not (a == b).
أما العبارة |
في سياق العمليات المنطقية وكذلك عند استخدام التعابير من طرف عبارات التحكم في التنفيذ، تفسّر القيم التالية إلى خطأ:
- عبارة
False - عبارة
None - العدد
0بجميع أنواعه (صحيح "0" أو عشري "0.0"). - السلاسل النصية والحاويات الفارغة (بضمنها الصفوف، القوائم، القواميس، المجموعات، المجموعات الجامدة).
تفسّر اللغة أيّ قيمة أخرى على أنّها صحيحة.
ملاحظات
- يعطي العامل
notالقيمةTrueإن كان وسيطه خطأً، وFalseفيما عدا ذلك.
- يعالج التعبير
x and yالمتغيرxأوّلًا؛ فإن كانxخطأً تعاد قيمته، وإلا يُعالج المتغيرyوتُعاد القيمة الناتجة عن المعالجة.
- يُعالج التعبير
x or yالمتغيرxأولًا؛ فإن كانxصحيحًا تعاد قيمته، وإلّا يُعالج المتغيرyوتعاد القيمة الناتجة عن المعالجة.
- لاحظ أنّ العاملين
andوorلا يقيدان القيمة والنوع المعاد منهما بـFalseوTrue، بل هما يعيدان الوسيط الأخير الذي تمّت معالجته. وهذا مفيد في بعض الأحيان، فعلى سبيل المثال إن كانتsسلسلة نصية يجب استبدالها بقيمة افتراضية إن كانت فارغة يعطي التعبيرs or 'foo' القيمة المطلوبة.
- يجب أن ينشئ العامل
notقيمة جديدة؛ لذا فإنّه يعيد قيمة منطقية بصرف النظر عن نوع الوسيط (مثلًا نتيجة التعبيرnot 'foo' هيFalseوليست'').
مصادر
- صفحتا Built-in Types و Expressions في توثيق بايثون الرسمي.