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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
سطر 22: سطر 22:
  
 
في سياق العمليات المنطقية وكذلك عند استخدام التعابير من طرف عبارات التحكم في التنفيذ، تفسّر القيم التالية إلى خطأ:
 
في سياق العمليات المنطقية وكذلك عند استخدام التعابير من طرف عبارات التحكم في التنفيذ، تفسّر القيم التالية إلى خطأ:
* عبارة False
+
* عبارة <code>False</code>
* عبارة None
+
* عبارة <code>None</code>
* العدد 0 بجميع أنواعه (صحيح أو عشري أو كسري).
+
* العدد <code>0</code> بجميع أنواعه ([[Python/int|صحيح]] أو [[Python/float|عشري]]).
* السلاسل النصية والحاويات الفارغة (بضمنها الصفوف، القوائم، القواميس، المجموعات، المجموعات الجامدة).
+
* السلاسل النصية والحاويات الفارغة (بضمنها [[Python/tuples|الصفوف]]، [[Python/list|القوائم]]، [[Python/dict|القواميس]]، [[Python/set|المجموعات]]، [[Python/set|المجموعات الجامدة]]).
 
تفسّر اللغة أيّ قيمة أخرى على أنّها صحيحة.
 
تفسّر اللغة أيّ قيمة أخرى على أنّها صحيحة.
  
 
== ملاحظات ==
 
== ملاحظات ==
* يعطي العامل not القيمة True إن كان وسيطه خطأً، وFalse فيما عدا ذلك.
+
* يعطي العامل <code>not</code> القيمة <code>True</code> إن كان وسيطه خطأً، و<code>False</code> فيما عدا ذلك.
  
* يعالج التعبير x and y المتغير x أوّلًا؛ فإن كان x خطأً تعاد قيمته، وإلا يُعالج المتغير y وتُعاد القيمة الناتجة عن المعالجة.
+
* يعالج التعبير <code>x and y</code> المتغير <code>x</code> أوّلًا؛ فإن كان <code>x</code> خطأً تعاد قيمته، وإلا يُعالج المتغير <code>y</code> وتُعاد القيمة الناتجة عن المعالجة.
  
* يُعالج التعبير x or y المتغير x أولًا؛ فإن كان x صحيحًا تعاد قيمته، وإلّا يُعالج المتغير y وتعاد القيمة الناتجة عن المعالجة.
+
* يُعالج التعبير <code>x or y</code> المتغير <code>x</code> أولًا؛ فإن كان <code>x</code> صحيحًا تعاد قيمته، وإلّا يُعالج المتغير <code>y</code> وتعاد القيمة الناتجة عن المعالجة.
  
* لاحظ أنّ العاملين and و or لا يقيدان القيمة والنوع المعاد منهما بـ False و True، بل هما يعيدان الوسيط الأخير الذي تمّت معالجته. وهذا مفيد في بعض الأحيان، فعلى سبيل المثال إن كانت <code>s</code> سلسلة نصية يجب استبدالها بقيمة افتراضية إن كانت فارغة يعطي التعبير <code>s or 'foo'</code>‎ القيمة المطلوبة.
+
* لاحظ أنّ العاملين <code>and</code> و <code>or</code> لا يقيدان القيمة والنوع المعاد منهما بـ <code>False</code> و <code>True</code>، بل هما يعيدان الوسيط الأخير الذي تمّت معالجته. وهذا مفيد في بعض الأحيان، فعلى سبيل المثال إن كانت <code>s</code> سلسلة نصية يجب استبدالها بقيمة افتراضية إن كانت فارغة يعطي التعبير <code>s or 'foo'</code>‎ القيمة المطلوبة.
  
 
* يجب أن ينشئ العامل <code>not</code> قيمة جديدة؛ لذا فإنّه يعيد قيمة منطقية بصرف النظر عن نوع الوسيط (مثلًا نتيجة التعبير <code>not 'foo'</code>‎ هي <code>False</code> وليست <code><nowiki>''</nowiki></code>).
 
* يجب أن ينشئ العامل <code>not</code> قيمة جديدة؛ لذا فإنّه يعيد قيمة منطقية بصرف النظر عن نوع الوسيط (مثلًا نتيجة التعبير <code>not 'foo'</code>‎ هي <code>False</code> وليست <code><nowiki>''</nowiki></code>).

مراجعة 10:15، 11 مارس 2018

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

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

مصادر

صفحتا Built-in Types و Expressions في توثيق بايثون الرسمي.