Python के `truthy` और `falsy`
यह लेख Python के truthy और falsy को समझाता है।
YouTube Video
Python के truthy और falsy
truthy और falsy की परिभाषा
Python में, सशर्त अभिव्यक्तियों में मूल्यांकन किए गए ऑब्जेक्ट्स को 'True' या 'False' माना जाता है। Truthy उन ऑब्जेक्ट्स को संदर्भित करता है जो 'True' के रूप में मूल्यांकित होते हैं, और falsy उन्हें जो 'False' के रूप में मूल्यांकित होते हैं। इन मूल्यांकनों का अक्सर उपयोग सशर्त शाखाओं जैसे if कथनों या while लूप्स में किया जाता है। साथ ही, bool() फ़ंक्शन किसी भी ऑब्जेक्ट को लेता है और उसका बूलियन मान लौटाता है।
Falsy (वे ऑब्जेक्ट्स जो False के रूप में मूल्यांकित होते हैं)
Python में, निम्नलिखित ऑब्जेक्ट्स को falsy माना जाता है:।
-
असत्य -
शून्य -
संख्यात्मक शून्य मान
- उदाहरण:
0,0.0
- उदाहरण:
-
खाली अनुक्रम प्रकार (जैसे खाली लिस्ट, ट्यूपल या स्ट्रिंग्स)
- उदाहरण:
[],(),""
- उदाहरण:
-
रिक्त शब्दकोश
- उदाहरण:
{}
- उदाहरण:
-
रिक्त सेट
- उदाहरण:
set()
- उदाहरण:
इन ऑब्जेक्ट्स को 'झूठा' माना जाता है जब इन्हें if स्टेटमेंट की शर्त में इस्तेमाल किया जाता है। उदाहरण के लिए, आप इस तरह कोड लिख सकते हैं।
1if not []:
2 print("The list is falsy.")- इस कोड में, सूची
[]खाली है, इसलिए इसेझूठामाना जाता है, औरprintस्टेटमेंट निष्पादित होता है।
Truthy (वे ऑब्जेक्ट्स जो True के रूप में मूल्यांकित होते हैं)
वे ऑब्जेक्ट्स जो falsy नहीं माने जाते उन्हें truthy माना जाता है।
-
शून्य के अलावा संख्याएं (पूर्णांक, फ्लोटिंग-पॉइंट संख्याएं)
- उदाहरण:
1,3.14,-100
- उदाहरण:
-
गैर-खाली अनुक्रम प्रकार (सूचियां, ट्यूपल, स्ट्रिंग्स, आदि)
- उदाहरण:
[1, 2, 3],(1, 2),"Hello"
- उदाहरण:
-
गैर-खाली शब्दकोश (डिक्शनरी)
- उदाहरण:
{"key": "value"}
- उदाहरण:
-
गैर-खाली सेट्स
- उदाहरण:
{1, 2, 3}
- उदाहरण:
truthy माने जाने वाले ऑब्जेक्ट्स, जब if स्टेटमेंट की शर्त में उपयोग किए जाते हैं, तो वे 'True' के रूप में मूल्यांकित होते हैं। उदाहरण के लिए, आप इस तरह कोड लिख सकते हैं।
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माना जाता है।
सत्यत्मक और झूठा का उपयोग करना
सत्यत्मक और झूठा का उपयोग करके, कोड अधिक संक्षिप्त और सहज रूप से लिखा जा सकता है। विशेष रूप से, 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 खाली सूची नहीं है, इसे सत्यत्मक माना जाता है, जिससे स्पष्ट तुलना की आवश्यकता समाप्त हो जाती है।
सत्यत्मक और झूठा के साथ डिज़ाइन करना
सत्यत्मक और झूठा की अवधारणाओं का प्रभावी रूप से उपयोग करके, आप कोड की पठनीयता और दक्षता बढ़ा सकते हैं। ये डिफ़ॉल्ट मान सेट करने, वेरिएबल की वैधता जांचने और इनपुट सत्यापन के लिए विशेष रूप से उपयोगी हैं। उदाहरण के लिए, यदि आप अपेक्षा करते हैं कि तर्क के रूप में शून्य या एक खाली सूची पास की जाएगी, तो आप इस तरह कोड लिख सकते हैं।
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के रूप में मूल्यांकित होता है।
निष्कर्ष
Python में truthy और falsy की अवधारणाएँ संक्षिप्त परिस्थितीय अभिव्यक्तियों को लिखने और कोड को अधिक सहज बनाने के लिए बहुत महत्वपूर्ण हैं। इनको समझना और सही ढंग से उपयोग करना कोड की पठनीयता और दक्षता को काफी हद तक बढ़ा सकता है।
आप हमारे YouTube चैनल पर Visual Studio Code का उपयोग करके ऊपर दिए गए लेख के साथ आगे बढ़ सकते हैं। कृपया YouTube चैनल को भी देखें।