क्या इन तीनों के बीच एक विशिष्ट परिदृश्य में कोई अंतर है?
पहले पूछता है कि चर कुछ भी गलत है या नहीं। इस परीक्षा के अलावा None
चीजों के सभी प्रकार के लिए असफल हो जायेगी - False
, 0
, किसी भी खाली अनुक्रम, आदि
दूसरा पूछता है कि क्या यह जादू सिंगलटन निरंतर None
है। यह केवल None
के लिए ही विफल हो जाएगा।
तीसरा पूछता है कि यह कुछ भी है जो खुद को None
के बराबर मानता है। यह Holder(None)
कहने में विफल रहेगा, जहां Holder
एक रैपर क्लास है जिसका उदाहरण जो भी हो रहा है उसके बराबर तुलना करता है। या, कम यथार्थवादी देने के लिए लेकिन कोड exmaple के लिए छोटा:
class Stupid(object):
def __ne__(self, other):
return False
Variable = Stupid()
आखिरी वाला शायद ही कभी उपयोगी है; वास्तव में, यदि आपको कभी लगता है कि आपको == None
या != None
की जांच करने की आवश्यकता हो सकती है, और आप विशेष रूप से पारदर्शी-रैपर वर्ग या ऐसा कुछ भी नहीं बना रहे हैं, तो शायद आप वास्तव में is None
या is not None
चाहते थे। लेकिन अन्य दो बहुत उपयोगी और आम हैं।
यदि कोई अंतर नहीं है तो कौन सा उपयोग करने के लिए उपयुक्त है?
ठीक है, एक अंतर है, और जो एक अधिक उपयुक्त है विशिष्ट उपयोग पर निर्भर करता है।
प्रश्न के अंत में, ऐसा लगता है कि आप पूछ सकते हैं कि विशिष्ट मामले में कोई अंतर है कि Variable
निश्चित रूप से None
है। उस स्थिति में, निश्चित रूप से तीनों के बीच कोई कार्यात्मक अंतर नहीं है। * उनमें से सभी को झूठी होने की गारंटी है, और इसलिए कुछ भी नहीं। जिसका मतलब है कि इनमें से किसी भी के बीच कोई अंतर नहीं है और कोई कोड नहीं लिख रहा है। जो बहुत आसान, अधिक पठनीय और तेज़ है।
* एक प्रदर्शन अंतर है- पहले व्यक्ति को LOAD_CONST
None
, या तुलना ऑपरेटर को कॉल करने की आवश्यकता नहीं है। और, भले ही आपने किसी भी तरह None
को पुनर्निर्मित करने में कामयाब रहे हों या None
स्थिरता के मूल्य को बदल दें (शायद ctypes
के साथ सभी ढेर पर स्टॉपिंग करके?), पहले व्यक्ति को अभी भी काम करने की अधिक संभावना है। लेकिन इनमें से कोई भी कभी मायने नहीं रखता है-और, अगर वे ऐसा करते हैं, तो फिर भी कोई कोड भी तेज और अधिक भरोसेमंद नहीं होगा।
हो सकता है कि वह मिश्रित 'अगर एक्स None' और है' अगर एक्स == None' – jamylak
हाँ, सही। –
को याद दिलाने के लिए धन्यवाद यह बंद होना चाहिए, यह या तो वास्तविक प्रश्न या डुप्लिकेट नहीं है। http: // stackoverflow।कॉम/प्रश्न/3257919/आईएस-नो-बनाम-कोई नहीं http://stackoverflow.com/questions/7816363/if-a-vs-if-a-is-not-none – jamylak