@Kalysto: Wenn überhaupt grössere mehrzeilige Zeichenketten, würde ich die am Anfang als Konstanten definieren. Dann kann man das so schreiben:
Code: Alles auswählen
TEMPLATE = """\
irgend was
zum schauen
so wie das hier....
"""
Eingerückt im Code mehr als eine Zeile, aber nicht zu viel, schreibe ich in der Regel als mehrere Zeichenketten die nur durch „whitespace“ getrennt sind:
Code: Alles auswählen
template = (
"irgend was\n"
"zum schauen\n"
"\n"
"\n"
"\n"
"so wie das hier....\n"
)
Das wird vom Compiler zu einer Zeichenkette zusammenfasst, verbraucht also zur Laufzeit keine Rechenzeit. Und man könnte auch alle Zeilen mit führenden Leerzeichen anfangen lassen, was bei `textwrap.detent()` nicht geht.
@sparrow: Zumindest der erste Backslash soll nicht escaped werden, der ist dazu da, damit die erste Zeile des Textes auf einer eigenen Zeile stehen kann und somit im Quelltext im Bezug auf die anderen Zeilen an der ”richtigen” Stelle. Vergleiche:
Code: Alles auswählen
text = """eins
zwei
drei
"""
# vs.
text = """\
eins
zwei
drei
"""
In der ersten Variante ist es einfach(er) das "eins" zu übersehen.
Ob der letzte Backslash im Original das Zeilenendezeichen bei der letzten Zeile verhindern sollte weiss ich nicht. Das habe ich weggelassen weil Zeilen ohne Zeilenendezeichen doof sind und früher oder später Ärger machen.