Questo è un inizio. Non è una cattiva pratica definire le stringhe più lunghe al di fuori del codice che le utilizza. È un modo per separare dati e comportamenti. La prima opzione è quella di unire le stringhe letterali insieme implicitamente facendoli adiacenti l'uno all'altro:
("This is the first line of my text, "
"which will be joined to a second.")
O con linea termina continuazioni, che è un po 'più fragile, come questo funziona:
"This is the first line of my text, " \
"which will be joined to a second."
Ma questo non lo fa:
"This is the first line of my text, " \
"which will be joined to a second."
Vedi la differenza? No? Beh, non lo farai nemmeno quando è il tuo codice.
L'aspetto negativo di unione implicita è che funziona solo con le stringhe, non con le stringhe prese da variabili, quindi le cose possono ottenere un po 'più peloso quando si refactoring. Inoltre, puoi solo interpolare la formattazione sulla stringa combinata nel suo complesso.
In alternativa, è possibile partecipare in modo esplicito utilizzando l'operatore di concatenazione (+
):
("This is the first line of my text, " +
"which will be joined to a second.")
Esplicito è meglio che implicita, come lo Zen di pitone, dice, ma questo crea tre corde invece di uno, e utilizza due volte tanta memoria: ci sono i due che hai scritto, più uno che è loro due uniti, quindi devi sapere quando ignorare lo zen. Il lato positivo è che è possibile applicare la formattazione a una qualsiasi delle sottostringhe separatamente su ogni riga o all'intero lotto al di fuori delle parentesi.
Infine, è possibile utilizzare le stringhe triple-citato:
"""This is the first line of my text
which will be joined to a second."""
Questo è spesso il mio preferito, anche se il suo comportamento è leggermente diversa in quanto il ritorno a capo e un qualsiasi spazio su righe successive verranno visualizzati nella stringa finale . È possibile eliminare la nuova riga con una barra rovesciata di escape.
"""This is the first line of my text \
which will be joined to a second."""
Questo ha lo stesso problema come la stessa tecnica sopra, dal fatto che il codice corretto differisce dal codice non corretto da spazi bianchi invisibile.
Quale è "il migliore" dipende dalla situazione particolare, ma la risposta non è semplicemente estetica, ma uno di comportamenti leggermente diversi.
Sembra una buona opzione. Cosa non ti piace a riguardo? –
Un po 'soggettivo, non è vero? :) –
correlati: http://stackoverflow.com/questions/1940710/syntax-quirks-or-why-is-that-valid-python (concatenazione di stringhe in python) – jldupont