القيم `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 أيضًا.۔