المسارات
/
Python
Python
/
المنهج
/
القيم المنطقية
ال

القيم المنطقية في Python

70 تمرينًا

نبذة عن القيم المنطقية

تمثّل Python القيمتين صحيح وخطأ بالنوع bool، وهو نوع فرعي من int. ولا يوجد في هذا النوع سوى قيمتين منطقيتين: True وFalse. ويمكن إسناد هاتين القيمتين إلى متغير ودمجهما باستخدام العوامل المنطقية (and وor وnot):

>>> true_variable = True and True
>>> false_variable = True and False

>>> true_variable = False or True
>>> false_variable = False or False

>>> true_variable = not False
>>> false_variable = not True

تستخدم العوامل المنطقية التقييم قصير الدائرة، أي أن التعبير الواقع على يمين العامل لا يُقيَّم إلا عند الحاجة.

ولكل عامل من هذه العوامل أسبقية مختلفة، إذ يُقيَّم not قبل and وor. ويمكن استخدام الأقواس الهلالية لتقييم جزء من التعبير قبل الأجزاء الأخرى:

>>> not True and True
False

>>> not (True and False)
True

وتُعدّ جميع boolean operators ذات أسبقية أدنى من comparison operators في Python، مثل == و> و< وis وis not.

تحويل الأنواع والصدق المنطقي

تحوّل دالة bool (bool()) أي كائن إلى قيمة منطقية. وبشكل افتراضي، تُرجع جميع الكائنات True ما لم يُعرَّف لها أن تُرجع False.

وهناك بعض built-ins التي تُعدّ دائمًا False بحكم التعريف:

  • الثابتان None وFalse
  • الصفر من أي نوع رقمي (int وfloat وcomplex وdecimal أو fraction)
  • المتتاليات و_المجموعات_ الفارغة (str وlist وset وtuple وdict وrange(0))
>>> bool(None)
False

>>> bool(1)
True

>>> bool(0)
False

>>> bool([1,2,3])
True

>>> bool([])
False

>>> bool({"Pig" : 1, "Cow": 3})
True

>>> bool({})
False

عند استخدام كائن في سياق منطقي، فإنه يُقيَّم بشكل شفاف على أنه صادق أو زائف باستخدام bool():

>>> a = "is this true?"
>>> b = []

# This will print "True", as a non-empty string is considered a "truthy" value
>>> if a:
...  print("True")

# This will print "False", as an empty list is considered a "falsey" value
>>> if not b:
...   print("False")

ويمكن للأصناف أن تحدّد كيف تُقيَّم في المواقف الصادقة إذا تجاوزت ونفّذت الطريقة __bool__() و/أو الطريقة __len__().

كيف تعمل القيم المنطقية من الداخل

يُنفَّذ النوع bool على أنه نوع فرعي من int. وهذا يعني أن True يساوي عدديًا 1 وFalse يساوي عدديًا 0. ويمكن ملاحظة ذلك عند مقارنتهما باستخدام عامل التساوي:

>>> 1 == True
True

>>> 0 == False
True

غير أن bools لا تزال مختلفة عن ints، كما يظهر عند مقارنتها باستخدام عامل الهوية، is:

>>> 1 is True
False

>>> 0 is False
False

ملاحظة: في python >= 3.8، سيؤدي استخدام قيمة حرفية (مثل 1 أو '' أو [] أو {}) على الجانب الأيسر من is إلى رفع تحذير.

يُعدّ استخدام عامل التساوي لمقارنة متغير منطقي بـTrue أو False نمطًا مضادًا في Python. وبدلًا من ذلك، ينبغي استخدام عامل الهوية is:


>>> flag = True

# Not "Pythonic"
>>> if flag == True:
...    print("This works, but it's not considered Pythonic.")

# A better way
>>> if flag:
...    print("Pythonistas prefer this pattern as more Pythonic.")
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة

تعلّم القيم المنطقية

التدريب مقفل

افتح تمرينين إضافيين لممارسة القيم المنطقية