القيم `truthy` و `falsy` في بايثون

القيم `truthy` و `falsy` في بايثون

تشرح هذه المقالة القيم truthy و falsy في بايثون۔

YouTube Video

القيم truthy و falsy في بايثون

تعريف truthy و falsy

في بايثون، يتم تقييم الكائنات في التعبيرات الشرطية على أنها إما 'True' أو 'False'۔ تشير truthy إلى الكائنات التي يتم تقييمها كـ 'True'، وتشير falsy إلى الكائنات التي يتم تقييمها كـ 'False'۔ تُستخدم هذه التقييمات غالبًا في الفروع الشرطية مثل عبارات if أو حلقات while۔ أيضًا، تأخذ الدالة bool() أي كائن وتعيد قيمته المنطقية۔

Falsy (الكائنات التي تقيم كـ False)

في بايثون، تعتبر الكائنات التالية قيمة خاطئة (falsy)

  • False

  • None

  • القيم الرقمية التي تساوي صفر

    • مثال: 0, 0.0
  • أنواع السلاسل الفارغة (مثل القوائم أو الصفوف أو السلاسل النصية الفارغة)

    • مثال: [], (), ""
  • القاموس الفارغ

    • مثال: {}
  • المجموعة الفارغة

    • مثال: set()

تُقَيَّم هذه الكائنات على أنها 'falsy' عند استخدامها في شرط عبارة if۔ على سبيل المثال، يمكنك كتابة الكود كالتالي۔

1if not []:
2    print("The list is falsy.")
  • في هذا الكود، القائمة [] فارغة، ولذلك تُقَيَّم على أنها falsy، ويتم تنفيذ عبارة print۔

Truthy (الكائنات التي تقيم كـ True)

الكائنات التي لا تعتبر خاطئة (falsy) تُعتبر صحيحة (truthy)۔

  • الأرقام غير الصفرية (الأعداد الصحيحة والأعداد العشرية)

    • أمثلة: 1, 3.14, -100
  • أنواع التسلسلات غير الفارغة (القوائم، التيربل، النصوص، إلخ.)

    • أمثلة: [1, 2, 3], (1, 2), "Hello"
  • القواميس غير الفارغة

    • مثال: {"key": "value"}
  • المجموعات غير الفارغة

    • مثال: {1, 2, 3}

الكائنات التي تعتبر صحيحة (truthy) ستُقيم كـ 'True' عند استخدامها في شرط جملة if۔ على سبيل المثال، يمكنك كتابة الكود كالتالي۔

1if [1, 2, 3]:
2    print("The list is truthy.")
  • في الشيفرة أعلاه، لأن القائمة [1, 2, 3] ليست فارغة، يتم تقييمها على أنها صحيحة (truthy) ويتم تنفيذ جملة print۔

تقييم القيمة المنطقية باستخدام دالة bool()

يمكنك تقييم القيمة المنطقية للكائنات باستخدام دالة bool()۔

 1# Examples of falsy values
 2print("False is", "truthy" if bool(False) else "falsy")
 3print("0 is", "truthy" if bool(0) else "falsy")
 4print('"" is', "truthy" if bool("") else "falsy")
 5print("None is", "truthy" if bool(None) else "falsy")
 6print("[] is", "truthy" if bool([]) else "falsy")
 7
 8# Examples of truthy values
 9print("1 is", "truthy" if bool(1) else "falsy")
10print('"hello" is', "truthy" if bool("hello") else "falsy")
11print('" " (space) is', "truthy" if bool(" ") else "falsy")
12print('"0" is', "truthy" if bool("0") else "falsy")
  • يوضح هذا الكود كيفية تقييم القيمة المنطقية لمختلف القيم۔ على سبيل المثال، تعتبر القيمة العددية 0 والسلسلة الفارغة '' على أنها False، بينما تعتبر المسافة أو السلسلة '0' على أنها True۔

استخدام truthy و falsy

باستخدام truthy و falsy، يمكن كتابة الكود بشكل أكثر اختصاراً ووضوحاً۔ على وجه الخصوص، يمكن عادةً تقييم عبارات if بدون مقارنات صريحة لتكون أكثر اختصاراً۔ على سبيل المثال، الكودان التاليان يتصرفان بشكل متشابه، لكن الأول أكثر اختصاراً۔

1my_list = [1]
2
3# Explicit comparison
4if my_list != []:
5    print("The list is not empty.")
6
7# Using truthy/falsy
8if my_list:
9    print("The list is not empty.")

في المثال أعلاه، يمكنك أن ترى أن my_list تُقَيَّم على أنها truthy طالما أنها ليست قائمة فارغة، مما يلغي الحاجة إلى مقارنة صريحة۔

التصميم باستخدام truthy و falsy

من خلال الاستخدام الفعال لمفاهيم truthy و falsy، يمكنك تحسين قابلية قراءة الكود وكفاءته۔ تكون ذات فائدة خاصة في تعيين القيم الافتراضية، والتحقق من صحة المتغيرات، والتحقق من صحة المدخلات۔ على سبيل المثال، إذا كنت تتوقع تمرير None أو قائمة فارغة كمعاملات، يمكنك كتابة الكود كالتالي۔

1def process_data(data=None):
2    data = data or []
3    print(data)
4
5process_data()  # An empty list is used by default.
  • في هذه الشيفرة، إذا كانت قيمة data هي None، يتم تعيين القائمة الفارغة [] كقيمة افتراضية۔ بهذه الطريقة، يتيح استخدام truthy وfalsy تعيين القيم الافتراضية بشكل موجز.۔

نقاط يجب الانتباه إليها لتجنب السلوك غير المقصود

ومع ذلك، على الرغم من أن الشيفرة التي تستخدم القيم truthy وfalsy يمكن أن تكون موجزة ومريحة، إلا أنه يجب الانتباه إلى أنها قد تسبب سلوكًا غير مقصود۔ على سبيل المثال، في هذه الشيفرة، ليس فقط عندما تكون data تساوي None، بل أيضًا عندما تكون أي قيمة يتم تقييمها كـ False، مثل سلسلة فارغة أو 0، سيتم استبدالها بالقائمة الفارغة الافتراضية []۔ لهذا السبب، عند الحاجة إلى شرط أكثر صرامة، مثل التهيئة فقط عندما تكون القيمة هي None، يُنصح باستخدام شرط صريح مثل value is None:۔ حسب الموقف، من المهم تصميم الكود مع تحقيق توازن بين الإيجاز والدقة۔

1def process_data(data=None):
2    if data is None:
3        data = []
4    print(data)
5
6process_data()   # An empty list is used by default.
7process_data(0)  # 0 is printed because it's not None.
  • في هذا الكود، يتم تهيئة data إلى قائمة فارغة فقط إذا كانت تساوي None، بينما تترك القيم غير الحقيقية الأخرى مثل 0 كما هي۔

التحكم في القيمة المنطقية في الكائنات المخصصة

حتى في الفئات الخاصة بك، يمكنك التحكم في القيمة المنطقية للكائن عن طريق تعريف الدالة __bool__() أو __len__()۔

 1class MyContainer:
 2    def __init__(self, items):
 3        self.items = items
 4
 5    def __len__(self):
 6        return len(self.items)
 7
 8box = MyContainer([])
 9print(bool(box))  # False
10
11box.items.append("item")
12print(bool(box))  # True
  • في هذه الشيفرة، تجعل دالة __len__() الحاوية تقيم على أنها False عندما تكون فارغة وTrue عندما تحتوي على عناصر۔

الخاتمة

مفاهيم truthy وfalsy في بايثون مهمة للغاية لكتابة تعبيرات شرطية موجزة وجعل الشيفرة البرمجية أكثر وضوحًا.۔ فهم واستخدام هذه المفاهيم بصورة صحيحة يمكن أن يعزز بشكل كبير من قابلية قراءة الشيفرة وكفاءتها.۔

يمكنك متابعة المقالة أعلاه باستخدام Visual Studio Code على قناتنا على YouTube.۔ يرجى التحقق من القناة على YouTube أيضًا.۔

YouTube Video