la variante senza +
avviene durante l'analisi sintassi del codice. Credo che è stato fatto per far si scrive più stringhe di linea più belli di codice, in modo da poter fare:
test = "This is a line that is " \
"too long to fit nicely on the screen."
Credo che quando è possibile, si dovrebbe utilizzare la versione non-+
, perché nel bytecode ci sarà essere solo la stringa risultante, nessun segno di concatenazione lasciato.
Quando si utilizza +
, si dispone di due string nel codice e si esegue la concatenazione durante il runtime (a meno che gli interpreti non siano intelligenti e lo ottimizzino, ma non so se lo fanno).
Ovviamente, non si può fare: a = 'A' ba = 'B' una
Quale è più veloce? La versione no-+
, perché è già stata eseguita prima dell'esecuzione dello script.
+
vs join
-> Se si dispone di un sacco di elementi, join
è preferito perché è ottimizzato per gestire molti elementi. L'utilizzo di + per concatenare più stringhe crea molti risultati parziali nella memoria di processo, mentre l'uso di join
non lo fa.
Se hai intenzione di concatenare solo un paio di elementi, suppongo che +
sia migliore in quanto è più leggibile.
Questa è una stringa * letterale * concatenazione. –
Con stringhe letterali, non vi è alcuna differenza tra la giustapposizione e l'uso dell'operatore '+'. Con le variabili, la giustapposizione non è un'opzione. – khelwood
Ho trovato un bell'articolo che potrebbe far luce su questo argomento per gli interessati: https://lwn.net/Articles/551426/ – UlfR