Więcej opcji. W Ipython z włączoną funkcją pylab dedent jest już w przestrzeni nazw. Sprawdziłem i pochodzi z matplotlib. Lub można go zaimportować za pomocą:
from matplotlib.cbook import dedent
W dokumentacji stwierdza się, że jest on szybszy niż ekwipunek do zawijania tekstu, aw moich testach w ipython jest on średnio 3 razy szybszy w moich szybkich testach. Ma także tę zaletę, że odrzuca wszelkie puste puste linie, co pozwala na elastyczność w tworzeniu łańcucha:
"""
line 1 of string
line 2 of string
"""
"""\
line 1 of string
line 2 of string
"""
"""line 1 of string
line 2 of string
"""
Użycie matplotlib dedent na tych trzech przykładach da ten sam rozsądny rezultat. Funkcja pochylania tekstu będzie miała wiodący pusty wiersz z pierwszym przykładem.
Oczywistą wadą jest to, że zawijanie tekstu znajduje się w standardowej bibliotece, podczas gdy matplotlib jest modułem zewnętrznym.
Niektóre kompromisy tutaj ... funkcje dedent sprawiają, że kod jest bardziej czytelny tam, gdzie definiowane są ciągi, ale wymagają przetworzenia później, aby uzyskać ciąg w użytecznym formacie. W dokumentach jest oczywiste, że należy używać poprawnego wcięcia, ponieważ większość zastosowań dokumentów będzie wymagała przetwarzania.
Kiedy potrzebuję długiego łańcucha w kodzie, znajduję następujący, co prawda brzydki kod, w którym pozwalam, by długi łańcuch wypadł z otaczającego wcięcia. Zdecydowanie zawodzi „Piękne jest lepsze niż brzydkie”, ale można argumentować, że jest prostsze i bardziej wyraźne niż wydana alternatywa.
def example():
long_string = '''\
Lorem ipsum dolor sit amet, consectetur adipisicing
elit, sed do eiusmod tempor incididunt ut labore et
dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip.\
'''
return long_string
print example()