जावा में, स्पष्ट रूप से घोषित स्ट्रिंग्स को जेवीएम द्वारा प्रशिक्षित किया जाता है, ताकि उसी स्ट्रिंग के बाद की घोषणा दो अलग-अलग (लेकिन समान) स्ट्रिंग्स के बजाए एक ही स्ट्रिंग इंस्टेंस के दो बिंदुओं में हो।क्या पाइथन इंटर्न स्ट्रिंग करता है?
उदाहरण के लिए:
public String baz() {
String a = "astring";
return a;
}
public String bar() {
String b = "astring"
return b;
}
public void main() {
String a = baz()
String b = bar()
assert(a == b) // passes
}
मेरा प्रश्न है, CPython (या किसी अन्य अजगर क्रम) तार के लिए एक ही बात करता है? उदाहरण के लिए, अगर मैं कुछ वर्ग है:
class example():
def __init__():
self._inst = 'instance'
और इस वर्ग के 10 उदाहरण बना, उनमें से हर एक एक उदाहरण चर स्मृति में एक ही स्ट्रिंग की चर्चा करते हुए होगा, या मैं 10 अलग तार के साथ खत्म हो जाएगा ?
इसे इंटर्निंग कहा जाता है, और हां, पायथन स्ट्रिंग अक्षर के रूप में बनाए गए छोटे तारों के लिए कुछ विस्तार करने के लिए ऐसा करता है। [पायथन स्ट्रिंग इंटर्निंग] देखें [http://stackoverflow.com/q/15541404) –
[पाइथन '==' बनाम 'की संभावित डुप्लिकेट' स्ट्रिंग की तुलना 'है,' कभी-कभी विफल हो जाती है, क्यों?] (Http: // stackoverflow.com/questions/1504717/python-vs-is-comparing-strings-is-fails- कभी-कभी- क्यों) – OptimusCrime
@MartijnPieters - धन्यवाद, लेकिन "छोटे" तार कितने छोटे हैं? क्या यह रनटाइम निर्भर है, या इसके लिए कोई मानक है? – csvan