Czy Python internuje ciągi znaków?
W Javie jawnie zadeklarowane ciągi są internowane przez JVM, tak że kolejne deklaracje tego samego ciągu skutkują dwoma wskaźnikami do tej samej instancji String, a nie dwoma oddzielnymi (ale identycznymi) łańcuchami.
Na przykład:
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
}
Moje pytanie brzmi, czy CPython (lub jakiekolwiek inne środowisko wykonawcze Pythona) robi to samo dla ciągów znaków? Na przykład, jeśli mam jakąś klasę:
class example():
def __init__():
self._inst = 'instance'
I stwórz 10 instancji tej klasy, czy każda z nich będzie miała zmienną instancji odwołującą się do tego samego ciągu w pamięci, czy też skończy się na 10 oddzielnych ciągach?