एक अजगर इंटरैक्टिव सत्र में जब:पाइथन इंटरेक्टिव मोड में तारों को इंटर्न नहीं कर रहा है?
In [1]: a = "my string"
In [2]: b = "my string"
In [3]: a == b
Out[3]: True
In [4]: a is b
Out[4]: False
In [5]: import sys
In [6]: print(sys.version)
3.5.2 (default, Nov 17 2016, 17:05:23)
[GCC 5.4.0 20160609]
दूसरी ओर, जब निम्न कार्यक्रम चलाने:
#!/usr/bin/env python
import sys
def test():
a = "my string"
b = "my string"
print(a == b)
print(a is b)
if __name__ == "__main__":
test()
print(sys.version)
उत्पादन होता है:
True
True
3.5.2 (default, Nov 17 2016, 17:05:23)
[GCC 5.4.0 20160609]
क्यों a is b
अलग परिणाम है उपर्युक्त दो मामलों में?
मैं this जवाब के बारे में पता कर रहा हूँ (और निश्चित रूप से ==
और is
ऑपरेटरों के बीच का अंतर! सवाल! की बात यह है कि), लेकिन नहीं कर रहे हैं a
और b
पहले मामले में एक ही वस्तु भी? (इंटरपेटर?) क्योंकि वे एक ही (अपरिवर्तनीय) स्ट्रिंग को इंगित करते हैं?
संभावित डुप्लिकेट [क्या Python में \ '== \' और \ 'है \" के बीच कोई अंतर है? (Http://stackoverflow.com/questions/132988/is-there-a-difference-between -और-इन-इन-पायथन) – Juggernaut
आपको cpython स्रोत कोड की जांच करनी होगी, लेकिन मुझे लगता है कि पाइथन दुभाषिया यह समझने के लिए पर्याप्त स्मार्ट है कि दोनों तार एक जैसे हैं और चूंकि तार अपरिवर्तनीय हैं एक ही उदाहरण के लिए दोनों चर इंगित करें। इसलिए एक 'चेक' चेक सही है। आरईपीएल के लिए तारों में वृद्धि होती है क्योंकि इस तरह के अनुकूलन अवसर नहीं होते हैं और दोनों चर विभिन्न वस्तुओं को संदर्भित करते हैं। –
@AminEtesamian जो मैं समझता हूं उससे सवाल यह है कि दुभाषिया का उपयोग करते समय आईडी अलग क्यों होती है लेकिन एक .py फ़ाइल चलाते समय समान होती है। मुझे लगता है कि पकारमोल है और == के बीच का अंतर समझता है। – HolyDanna