さらにいくつかのオプション。pylabを有効にしたIpythonでは、dedentはすでに名前空間にあります。私がチェックしたところ、それはmatplotlibからのものです。または、次のコマンドでインポートできます。
from matplotlib.cbook import dedent
ドキュメンテーションでは、同等のtextwrapよりも高速であると述べており、ipythonでの私のテストでは、私のクイックテストで実際に平均で3倍高速です。また、先頭の空白行を破棄するという利点もあります。これにより、文字列の作成方法に柔軟性を持たせることができます。
"""
line 1 of string
line 2 of string
"""
"""\
line 1 of string
line 2 of string
"""
"""line 1 of string
line 2 of string
"""
これら3つの例でmatplotlib dedentを使用すると、同じ実用的な結果が得られます。textwrap dedent関数には、最初の例のように先行する空白行があります。
明らかな欠点は、matwrapplibが外部モジュールであるのに対して、textwrapが標準ライブラリにあることです。
ここにいくつかのトレードオフがあります... dedent関数は、文字列が定義される場所でコードを読みやすくしますが、使用可能な形式で文字列を取得するには後で処理する必要があります。docstringでは、ほとんどの使用で必要な処理が行われるため、正しいインデントを使用する必要があることは明らかです。
コードに長い文字列が必要な場合、次の明らかに醜いコードを見つけます。長い文字列を囲んでいるインデントから削除します。「Beautifulは醜いよりも優れている」という点で間違いなく失敗しますが、それはdedentの代替案よりも単純で明確であると主張することができます。
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()