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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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

العامل النتيجة ملاحظات
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 فتعدّ خطأٌ في الصياغة.

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

تفسّر اللغة أيّ قيمة أخرى على أنّها صحيحة.

ملاحظات

  • يعطي العامل 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 وليست '').

مصادر