それが始まりです。それらを使用するコードの外で長い文字列を定義することは悪い習慣ではありません。データと動作を分離する方法です。最初のオプションは、文字列リテラルを互いに隣接させることによって暗黙的に結合することです。
("This is the first line of my text, "
"which will be joined to a second.")
または、これが機能するため、少し壊れやすい行末の継続を使用します。
"This is the first line of my text, " \
"which will be joined to a second."
しかし、これはしません:
"This is the first line of my text, " \
"which will be joined to a second."
違いを見ます?番号?それがあなたのコードであるときもそうではありません。
暗黙的な結合の欠点は、文字列リテラルでのみ機能し、変数から取得した文字列では機能しないため、リファクタリングを行うと少し複雑になる可能性があります。また、結合された文字列全体のフォーマットのみを補間できます。
または、連結演算子(+
)を使用して明示的に結合することもできます。
("This is the first line of my text, " +
"which will be joined to a second.")
pythonの禅が言うように、明示的は暗黙的よりも優れていますが、これは1つではなく3つの文字列を作成し、2倍のメモリを使用します。禅を無視する時期を知る必要があります。利点は、各行の部分文字列のいずれかに個別に、または括弧の外側からロット全体にフォーマットを適用できることです。
最後に、三重引用符で囲まれた文字列を使用できます。
"""This is the first line of my text
which will be joined to a second."""
これはしばしば私のお気に入りですが、改行と後続の行の先頭の空白が最終的な文字列に表示されるため、その動作は少し異なります。バックスラッシュをエスケープすると、改行を削除できます。
"""This is the first line of my text \
which will be joined to a second."""
これには上記の同じ手法と同じ問題があります。正しいコードは、不可視の空白によって誤ったコードと異なるだけです。
どちらが「最適」かは、特定の状況によって異なりますが、答えは単に美的ではなく、微妙に異なる動作の1つです。