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