C'est un début. Ce n'est pas une mauvaise pratique de définir vos chaînes plus longues en dehors du code qui les utilise. C'est un moyen de séparer les données et le comportement. Votre première option est de rejoindre littéraux de chaîne ainsi implicitement en les rendant adjacents les uns aux autres:
("This is the first line of my text, "
"which will be joined to a second.")
Ou avec fin de ligne continuations, ce qui est un peu plus fragile, car cela fonctionne:
"This is the first line of my text, " \
"which will be joined to a second."
Mais ce n'est pas:
"This is the first line of my text, " \
"which will be joined to a second."
Voir la différence? Non? Eh bien, vous ne le ferez pas quand c'est votre code non plus. L'inconvénient de la jointure implicite est qu'elle ne fonctionne qu'avec des littéraux de chaîne, et non avec des chaînes tirées de variables , donc les choses peuvent devenir un peu plus poilues lorsque vous refactorisez. En outre, vous ne pouvez interpoler la mise en forme que sur la chaîne combinée dans son ensemble.
Vous pouvez joindre explicitement en utilisant l'opérateur de concaténation (+
):
("This is the first line of my text, " +
"which will be joined to a second.")
explicite est mieux que implicite, comme le dit le zen de python, mais cela crée trois chaînes au lieu d'un, et utilise deux fois autant de mémoire: il y a les deux que vous avez écrits, plus un qui est les deux réunis, donc vous devez savoir quand ignorer le zen. L'avantage est que vous pouvez appliquer une mise en forme à l'une des sous-chaînes séparément sur chaque ligne, ou à l'ensemble du lot de l'extérieur des parenthèses.
Enfin, vous pouvez utiliser des chaînes triples guillemets:
"""This is the first line of my text
which will be joined to a second."""
C'est souvent mon préféré, bien que son comportement est légèrement différent comme le saut de ligne et d'éventuels blancs sur les lignes suivantes vont apparaître dans votre chaîne finale . Vous pouvez éliminer le saut de ligne avec une barre oblique inverse qui s'échappe.
"""This is the first line of my text \
which will be joined to a second."""
Cela a le même problème que la même technique ci-dessus, dans ce code correct ne diffère de code incorrect par un espace invisible.
Lequel est «meilleur» dépend de votre situation particulière, mais la réponse n'est pas simplement esthétique, mais l'un des comportements subtilement différents.
Cela semble être une bonne option. Qu'est-ce que tu n'aimes pas? –
Un peu subjectif, n'est-ce pas? :) –
related: http://stackoverflow.com/questions/1940710/syntax-quirks-or-why-is-that-valid-python (concaténation de chaînes en python) – jldupont