सारांश:
का प्रयोग करें isजब आप एक वस्तु के खिलाफ जाँच करना चाहते पहचान (अगर देखने के लिए जाँच जैसे varहै None)। ==जब आप समानता की जांच करना चाहते हैं (उदाहरण के लिए) का उपयोग करेंvar के बराबर 3?)।
स्पष्टीकरण:
आपके पास कस्टम कक्षाएं हो सकती हैं जहां my_var == Noneवापस आ जाएगीTrue
उदाहरण के लिए:
class Negator(object):
def __eq__(self,other):
return not other
thing = Negator()
print thing == None #True
print thing is None #False
isवस्तु पहचान के लिए जाँच । केवल 1 ऑब्जेक्ट है None, इसलिए जब आप ऐसा करते हैं my_var is None, तो आप जाँच रहे हैं कि क्या वे वास्तव में एक ही ऑब्जेक्ट हैं (न केवल समतुल्य हैं वस्तुएं)
दूसरे शब्दों में, ==समतुल्यता के लिए एक जाँच है (जो वस्तु से वस्तु पर परिभाषित की गई है) जबकि isवस्तु पहचान के लिए जाँच:
lst = [1,2,3]
lst == lst[:] # This is True since the lists are "equivalent"
lst is lst[:] # This is False since they're actually different objects
is- python.org/dev/peps/pep-0008/#programming-recommendations