Quelques options supplémentaires. Dans Ipython avec pylab activé, dedent est déjà dans l'espace de noms. J'ai vérifié et c'est de matplotlib. Ou il peut être importé avec:
from matplotlib.cbook import dedent
Dans la documentation, il indique qu'il est plus rapide que l'équivalent textwrap et dans mes tests en ipython, il est en effet 3 fois plus rapide en moyenne avec mes tests rapides. Il a également l'avantage de supprimer toutes les lignes vides principales, ce qui vous permet d'être flexible dans la façon dont vous construisez la chaîne:
"""
line 1 of string
line 2 of string
"""
"""\
line 1 of string
line 2 of string
"""
"""line 1 of string
line 2 of string
"""
L'utilisation du matplotlib en fonction de ces trois exemples donnera le même résultat raisonnable. La fonction de dédoublement du texte aura une première ligne vierge avec le 1er exemple.
L'inconvénient évident est que textwrap est dans la bibliothèque standard tandis que matplotlib est un module externe.
Quelques compromis ici ... les fonctions dédentes rendent votre code plus lisible là où les chaînes sont définies, mais nécessitent un traitement ultérieur pour obtenir la chaîne au format utilisable. Dans docstrings, il est évident que vous devez utiliser une indentation correcte car la plupart des utilisations de docstring feront le traitement requis.
Lorsque j'ai besoin d'une chaîne non longue dans mon code, je trouve le code suivant, certes laid, où je laisse la longue chaîne tomber de l'indentation englobante. Échoue définitivement sur "Beau, c'est mieux que laid.", Mais on pourrait dire qu'il est plus simple et plus explicite que l'alternative dédente.
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()