Jawaban:
Apa garis? Anda dapat memiliki argumen di baris berikutnya tanpa masalah:
a = dostuff(blahblah1, blahblah2, blahblah3, blahblah4, blahblah5,
blahblah6, blahblah7)
Kalau tidak, Anda dapat melakukan sesuatu seperti ini:
if a == True and \
b == False
Periksa panduan gaya untuk informasi lebih lanjut.
Dari baris contoh Anda:
a = '1' + '2' + '3' + \
'4' + '5'
Atau:
a = ('1' + '2' + '3' +
'4' + '5')
Perhatikan bahwa panduan gaya mengatakan bahwa menggunakan kelanjutan implisit dengan tanda kurung lebih disukai, tetapi dalam kasus khusus ini hanya menambahkan tanda kurung di sekitar ekspresi Anda mungkin cara yang salah untuk melangkah.
Dari PEP 8 - Panduan Gaya untuk Kode Python :
Cara pembungkus garis panjang yang disukai adalah dengan menggunakan kelanjutan garis tersirat Python di dalam tanda kurung, kurung dan kawat gigi. Garis panjang dapat dipecah menjadi beberapa baris dengan membungkus ekspresi dalam tanda kurung. Ini harus digunakan dalam preferensi untuk menggunakan garis miring terbalik untuk kelanjutan garis.
Garis miring terbalik mungkin masih tepat pada waktunya. Misalnya, panjang, banyak dengan-pernyataan tidak dapat menggunakan kelanjutan implisit, sehingga backslash dapat diterima:
with open('/path/to/some/file/you/want/to/read') as file_1, \ open('/path/to/some/file/being/written', 'w') as file_2: file_2.write(file_1.read())
Lain halnya dengan pernyataan tegas.
Pastikan untuk membuat indentasi baris lanjutan dengan tepat. Tempat yang disukai untuk istirahat di sekitar operator biner adalah setelah operator, bukan sebelumnya. Beberapa contoh:
class Rectangle(Blob): def __init__(self, width, height, color='black', emphasis=None, highlight=0): if (width == 0 and height == 0 and color == 'red' and emphasis == 'strong' or highlight > 100): raise ValueError("sorry, you lose") if width == 0 and height == 0 and (color == 'red' or emphasis is None): raise ValueError("I don't think so -- values are %s, %s" % (width, height)) Blob.__init__(self, width, height, color, emphasis, highlight)
PEP8 sekarang merekomendasikan konvensi yang berlawanan (untuk melanggar pada operasi biner) yang digunakan oleh matematikawan dan penerbit mereka untuk meningkatkan keterbacaan.
Gaya melanggar Donald Knuth sebelum operator biner menyelaraskan operator secara vertikal, sehingga mengurangi beban kerja mata saat menentukan item mana yang ditambahkan dan dikurangi.
Dari PEP8: Haruskah sambungan terputus sebelum atau setelah operator biner? :
Donald Knuth menjelaskan aturan tradisional dalam seri Computers and Typesetting-nya: "Meskipun formula dalam paragraf selalu berhenti setelah operasi biner dan relasi, rumus yang ditampilkan selalu rusak sebelum operasi biner" [3].
Mengikuti tradisi dari matematika biasanya menghasilkan kode yang lebih mudah dibaca:
# Yes: easy to match operators with operands income = (gross_wages + taxable_interest + (dividends - qualified_dividends) - ira_deduction - student_loan_interest)
Dalam kode Python, diizinkan untuk memecah sebelum atau setelah operator biner, selama konvensi konsisten secara lokal. Untuk kode baru, gaya Knuth disarankan.
[3]: The TeXBook karya Donald Knuth, halaman 195 dan 196
The preferred way .. is by using Python's implied line continuation inside parentheses
ini sama dengan by wrapping expressions in parentheses
. Saya telah memperbarui contoh
Bahaya menggunakan backslash untuk mengakhiri garis adalah bahwa jika spasi ditambahkan setelah backslash (yang, tentu saja, sangat sulit dilihat), backslash tidak lagi melakukan apa yang Anda pikir sebelumnya.
Lihat Python Idioms dan Anti-Idioms (untuk Python 2 atau Python 3 ) untuk lebih lanjut.
set list listchars=trail:·
di vim. :)
Anda dapat memutus garis di antara tanda kurung dan kawat gigi. Selain itu, Anda dapat menambahkan karakter garis miring terbalik \
ke garis untuk secara eksplisit memecahnya:
x = (tuples_first_value,
second_value)
y = 1 + \
2
Dari mulut kuda: Garis eksplisit bergabung
Dua atau lebih garis fisik dapat digabungkan ke dalam garis logis menggunakan karakter garis miring terbalik (
\
), sebagai berikut: ketika garis fisik berakhir dengan garis miring terbalik yang bukan bagian dari string literal atau komentar, itu bergabung dengan yang berikut membentuk garis logis tunggal , menghapus garis miring terbalik dan karakter end-of-line berikut. Sebagai contoh:if 1900 < year < 2100 and 1 <= month <= 12 \ and 1 <= day <= 31 and 0 <= hour < 24 \ and 0 <= minute < 60 and 0 <= second < 60: # Looks like a valid date return 1
Baris yang diakhiri dengan garis miring terbalik tidak dapat membawa komentar. Garis miring terbalik tidak melanjutkan komentar. Garis miring terbalik tidak melanjutkan token kecuali untuk string literal (yaitu, token selain string literal tidak dapat dibagi melintasi garis fisik menggunakan backslash). Backslash ilegal di tempat lain di jalur di luar string literal.
Ini mungkin bukan cara Pythonic, tapi saya biasanya menggunakan daftar dengan fungsi join untuk menulis string panjang, seperti query SQL:
query = " ".join([
'SELECT * FROM "TableName"',
'WHERE "SomeColumn1"=VALUE',
'ORDER BY "SomeColumn2"',
'LIMIT 5;'
])
Diambil dari The Hitchhiker's Guide to Python ( Line Continuation ):
Ketika satu baris kode logis lebih panjang dari batas yang diterima, Anda perlu membaginya menjadi beberapa garis fisik. Penerjemah Python akan bergabung dengan garis berurutan jika karakter terakhir dari garis tersebut adalah garis miring terbalik. Ini membantu dalam beberapa kasus, tetapi biasanya harus dihindari karena kerapuhannya: spasi putih yang ditambahkan ke akhir baris, setelah garis miring terbalik, akan memecahkan kode dan mungkin memiliki hasil yang tidak terduga.
Solusi yang lebih baik adalah dengan menggunakan tanda kurung di sekitar elemen Anda. Di sebelah kiri dengan tanda kurung tertutup pada akhir baris, juru bahasa Python akan bergabung dengan baris berikutnya sampai tanda kurung ditutup. Perilaku yang sama berlaku untuk kurung kurawal dan bujur sangkar.
Namun , lebih sering daripada tidak, harus memecah garis logis panjang adalah tanda bahwa Anda mencoba melakukan terlalu banyak hal pada saat yang sama, yang dapat menghambat keterbacaan.
Karena itu, berikut adalah contoh mempertimbangkan beberapa impor (ketika melebihi batas garis, didefinisikan pada PEP-8 ), juga diterapkan pada string secara umum:
from app import (
app, abort, make_response, redirect, render_template, request, session
)
Jika Anda ingin memecah baris Anda karena string literal yang panjang, Anda dapat memecah string itu menjadi beberapa bagian:
long_string = "a very long string"
print("a very long string")
akan diganti oleh
long_string = (
"a "
"very "
"long "
"string"
)
print(
"a "
"very "
"long "
"string"
)
Output untuk kedua pernyataan cetak:
a very long string
Perhatikan tanda kurung dalam afiksasinya.
Perhatikan juga bahwa memecah string literal menjadi beberapa bagian memungkinkan untuk menggunakan awalan literal hanya pada bagian-bagian dari string:
s = (
"2+2="
f"{2+2}"
)
Gunakan operator kelanjutan garis yaitu "\"
Contoh:
# Ex.1
x = 1
s = x + x**2/2 + x**3/3 \
+ x**4/4 + x**5/5 \
+ x**6/6 + x**7/7 \
+ x**8/8
print(s)
# 2.7178571428571425
----------
# Ex.2
text = ('Put several strings within parentheses ' \
'to have them joined together.')
print(text)
----------
# Ex.3
x = 1
s = x + x**2/2 \
+ x**3/3 \
+ x**4/4 \
+ x**6/6 \
+ x**8/8
print(s)
# 2.3749999999999996