Beberapa opsi lagi. Di Ipython dengan pylab diaktifkan, dedent sudah ada di namespace. Saya memeriksa dan itu dari matplotlib. Atau dapat diimpor dengan:
from matplotlib.cbook import dedent
Dalam dokumentasi itu menyatakan bahwa itu lebih cepat daripada yang setara dengan textwrap dan dalam tes saya di ipython memang 3 kali lebih cepat rata-rata dengan tes cepat saya. Ini juga memiliki keuntungan bahwa ia membuang setiap baris kosong terkemuka yang memungkinkan Anda untuk fleksibel dalam cara Anda membangun string:
"""
line 1 of string
line 2 of string
"""
"""\
line 1 of string
line 2 of string
"""
"""line 1 of string
line 2 of string
"""
Menggunakan dedikasi matplotlib pada ketiga contoh ini akan memberikan hasil yang masuk akal yang sama. Fungsi deduksi tulisan teks akan memiliki baris kosong terkemuka dengan contoh 1.
Kerugian yang jelas adalah bahwa textwrap di perpustakaan standar sementara matplotlib adalah modul eksternal.
Beberapa tradeoffs di sini ... fungsi dedent membuat kode Anda lebih mudah dibaca di mana string didefinisikan, tetapi membutuhkan pemrosesan nanti untuk mendapatkan string dalam format yang dapat digunakan. Dalam dokumentasi jelas bahwa Anda harus menggunakan indentasi yang benar karena sebagian besar penggunaan docstring akan melakukan pemrosesan yang diperlukan.
Ketika saya membutuhkan string yang tidak panjang dalam kode saya, saya menemukan kode jelek berikut ini di mana saya membiarkan string panjang keluar dari lekukan terlampir. Jelas gagal pada "Cantik lebih baik daripada jelek.", Tetapi orang bisa berpendapat bahwa itu lebih sederhana dan lebih eksplisit daripada alternatif yang ditentukan.
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()