在Java中,顯式聲明的字符串是由JVM實現的,因此相同字符串的後續聲明會生成兩個指向同一個String實例的指針,而不是兩個單獨(但相同)的字符串。Python實習生字符串?
例如:
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(或任何其他的Python運行時)做串同樣的事情?例如,如果我有一些類:
class example():
def __init__():
self._inst = 'instance'
而創建該類的10個實例,將它們中的每一個具有一個實例變量參照在存儲器中的相同的字符串,或我將結束與10名單獨的字符串?
這就是所謂的實習,是的,Python對此做了一些擴展,對於以字符串文字形式創建的較短的字符串。請參見[Python string interning](http://stackoverflow.com/q/15541404) –
[Python'=='vs'可能重複的是'比較字符串','有時會失敗,爲什麼?](http:// stackoverflow.com/questions/1504717/python-vs-is-comparing-strings-is-fails-sometimes-why) – OptimusCrime
@MartijnPieters - 謝謝,但「短」字符串有多短?這是依賴於運行時,還是有一個標準? – csvan