العمليات المنطقية في بايثون

من موسوعة حسوب

تقدّم بايثون ثلاث عمليات منطقية، وهي مرتبة في الجدول التالي حسب أولويتها ترتيبًا تصاعديًا:

العامل النتيجة ملاحظات
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)‎.

أما العبارة a == not b فتعدّ خطأٌ في الصياغة.

في سياق العمليات المنطقية وكذلك عند استخدام التعابير من طرف عبارات التحكم في التنفيذ، تفسّر القيم التالية إلى خطأ:

  • عبارة False
  • عبارة None
  • العدد 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 في توثيق بايثون الرسمي.