In Java, le stringhe dichiarate esplicitamente sono internate dalla JVM, in modo che le dichiarazioni successive della stessa stringa producano due puntatori alla stessa istanza di stringa, anziché due stringhe separate (ma identiche).Le stringhe interne di Python?
Ad esempio:
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
}
La mia domanda è, CPython (o qualsiasi altro runtime Python) fanno la stessa cosa per le stringhe? Per esempio, se ho qualche classe:
class example():
def __init__():
self._inst = 'instance'
e creare 10 istanze di questa classe, si ognuno di loro ha una variabile di istanza riferendosi alla stessa stringa in memoria, o dovrò finire con 10 stringhe separate ?
Questo è chiamato interning, e sì, Python lo fa in parte, per stringhe più corte create come stringhe letterali. Vedi [Python string interning] (http://stackoverflow.com/q/15541404) –
possibile duplicato di [Python '==' vs 'è' confronto stringhe, 'è' fallisce a volte, perché?] (Http: // stackoverflow.com/questions/1504717/python-vs-is-comparing-strings-is-fails-sometimes-why) – OptimusCrime
@MartijnPieters - grazie, ma quanto sono corte le stringhe "più corte"? Questo runtime è dipendente o esiste uno standard per questo? – csvan