Seperti PEP8 menyarankan untuk tetap di bawah aturan 80 kolom untuk program python Anda, bagaimana saya bisa mematuhinya dengan string panjang, yaitu
s = "this is my really, really, really, really, really, really, really long string that I'd like to shorten."
Bagaimana saya akan memperluas ini ke baris berikut, yaitu
s = "this is my really, really, really, really, really, really" +
"really long string that I'd like to shorten."
Selain itu, karena konstanta string yang berdekatan secara otomatis digabungkan, Anda dapat mengkodekannya seperti ini juga:
Catat tidak ada tanda tambah, dan saya menambahkan koma dan ruang tambahan yang mengikuti format contoh Anda.
Secara pribadi saya tidak suka garis miring terbalik, dan saya ingat pernah membaca di suatu tempat bahwa penggunaannya sebenarnya sudah tidak digunakan lagi dalam bentuk yang lebih eksplisit. Ingat "Eksplisit lebih baik daripada implisit."
Saya menganggap backslash kurang jelas dan kurang bermanfaat karena ini sebenarnya lolos dari karakter baris baru. Tidak mungkin untuk memberikan komentar akhir baris jika perlu. Dimungkinkan untuk melakukan ini dengan konstanta string gabungan:
Saya menggunakan pencarian Google "panjang garis python" yang mengembalikan tautan PEP8 sebagai hasil pertama, tetapi juga tautan ke posting StackOverflow lain yang bagus tentang topik ini: " Mengapa Python PEP-8 menentukan panjang garis maksimum 79 karakter? "
Frasa pencarian bagus lainnya adalah "kelanjutan garis python".
sumber
"str1" + "str2"
daripada"str1" "str2"
('this is my really, really, really, really, really long {} ' 'that I'd really, really, really, like to {}').format(var1, var2))
Saya pikir kata paling penting dalam pertanyaan Anda adalah "menyarankan".
Standar pengkodean adalah hal yang lucu. Seringkali pedoman yang mereka berikan memiliki dasar yang sangat bagus ketika ditulis (misalnya sebagian besar terminal tidak dapat menampilkan> 80 karakter pada satu baris), tetapi seiring berjalannya waktu mereka menjadi usang secara fungsional, tetapi masih dipegang teguh. Saya kira apa yang perlu Anda lakukan di sini adalah menimbang manfaat relatif dari "melanggar" saran khusus itu terhadap keterbacaan dan mainatinabilitas kode Anda.
Maaf ini tidak langsung menjawab pertanyaan Anda.
sumber
Anda kehilangan spasi, dan Anda mungkin memerlukan karakter kelanjutan garis, yaitu. a
\
.atau bahkan:
Orang tua juga akan berfungsi sebagai ganti kelanjutan garis, tetapi Anda berisiko seseorang mengira Anda bermaksud memiliki tuple dan baru saja lupa koma. Ambil contoh:
melawan:
Dengan pengetikan dinamis Python, kode dapat berjalan baik, tetapi menghasilkan hasil yang salah dengan yang tidak Anda inginkan.
sumber
Garis miring terbalik:
atau bungkus dengan parens:
sumber
Ini semua adalah jawaban yang bagus, tetapi saya tidak dapat menemukan plugin editor yang akan membantu saya mengedit string "secara implisit digabung", jadi saya menulis sebuah paket untuk membuatnya lebih mudah bagi saya.
Di pip (instal paragraf) jika ada yang berkeliaran di thread lama ini ingin memeriksanya. Memformat string multi-baris seperti yang dilakukan html (kompres spasi putih, dua baris baru untuk paragraf baru, jangan khawatir tentang spasi di antara baris).
menjadi ...
Semuanya berbaris dengan mudah dengan (Vim) 'gq'
sumber
Dengan
\
Anda dapat memperluas pernyataan ke beberapa baris:harus bekerja.
sumber
Saya cenderung menggunakan beberapa metode yang tidak disebutkan di sini untuk menentukan string besar, tetapi ini untuk skenario yang sangat spesifik. YMMV ...
Gumpalan teks multi-baris, seringkali dengan token yang diformat (tidak sesuai dengan yang Anda tanyakan, tetapi masih bermanfaat):
Tumbuhkan variabel sepotong demi sepotong melalui metode interpolasi string apa pun yang Anda sukai:
Baca dari file. PEP-8 tidak membatasi panjang string dalam file; hanya baris kode Anda. :)
Gunakan brute-force atau editor Anda untuk membagi string menjadi garis managaeble menggunakan baris baru, dan kemudian hapus semua baris baru. (Mirip dengan teknik pertama yang saya daftarkan):
sumber
Pilihan yang tersedia:
"foo" \ "bar"
"foo" + \ "bar"
("foo" "bar")
("foo" + "bar")
Menghindari
Hindari tanda kurung dengan koma:
("foo", "bar")
yang mendefinisikan tupel.sumber
Jika Anda harus memasukkan string string yang lama dan ingin flake8 tutup mulut, Anda dapat menggunakannya sebagai arahan tutup mulut . Misalnya, dalam rutinitas pengujian saya menetapkan beberapa input CSV palsu. Saya menemukan bahwa membaginya di lebih banyak baris yang memiliki baris akan sangat membingungkan, jadi saya memutuskan untuk menambahkan
# noqa: E501
sebagai berikut:sumber
Saya telah menggunakan textwrap.dedent di masa lalu. Agak rumit jadi saya lebih suka kelanjutan baris sekarang, tetapi jika Anda benar-benar menginginkan indentasi blok, saya pikir ini hebat.
Kode Contoh (di mana trim untuk menyingkirkan '\ n' pertama dengan sebuah irisan):
Penjelasan:
dedent menghitung lekukan berdasarkan ruang putih di baris teks pertama sebelum baris baru. Jika Anda ingin men-tweak, Anda dapat dengan mudah mengimplementasikannya menggunakan
re
modul.Metode ini memiliki batasan dalam garis yang sangat panjang mungkin masih lebih lama dari yang Anda inginkan dalam hal ini metode lain yang merangkai string lebih cocok.
sumber
x[1:]
Anda dapat menggunakan backslash setelahx = """
untuk menghindari baris baru pertama.