Python के `truthy` और `falsy`

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 चैनल को भी देखें।

YouTube Video