Dalam kasus tupel elemen tunggal, diperlukan tanda koma.
a = ('foo',)
Bagaimana dengan tupel dengan banyak elemen? Tampaknya ada atau tidak tanda koma di belakangnya, keduanya valid. Apakah ini benar? Menurut saya, memiliki tanda koma lebih mudah untuk diedit. Apakah itu gaya pengkodean yang buruk?
a = ('foo1', 'foo2')
b = ('foo1', 'foo2',)
Jawaban:
Dalam semua kasus kecuali tupel kosong koma adalah hal yang penting. Tanda kurung hanya diperlukan bila diperlukan untuk alasan sintaksis lainnya: untuk membedakan tupel dari sekumpulan argumen fungsi, prioritas operator, atau untuk mengizinkan jeda baris.
Tanda koma untuk tupel, daftar, atau argumen fungsi adalah gaya yang bagus terutama jika Anda memiliki inisialisasi panjang yang terbagi menjadi beberapa baris. Jika Anda selalu menyertakan tanda koma maka Anda tidak akan menambahkan baris lain di akhir berharap untuk menambahkan elemen lain dan sebaliknya hanya membuat ekspresi yang valid:
Dengan asumsi bahwa dimulai sebagai daftar 2 elemen yang kemudian diperpanjang, itu menjadi salah dengan cara yang mungkin tidak segera jelas. Selalu sertakan koma di belakangnya dan Anda menghindari jebakan itu.
sumber
Hal ini hanya diperlukan untuk tupel item tunggal untuk membedakan definisi tupel atau ekspresi yang dikelilingi oleh tanda kurung.
Untuk lebih dari satu item, itu tidak lagi diperlukan karena sangat jelas itu adalah tupel. Namun, tanda koma diizinkan untuk mempermudah penentuannya menggunakan beberapa baris. Anda dapat menambahkan ke bagian akhir atau mengatur ulang item tanpa merusak sintaks karena Anda tidak sengaja meninggalkan koma.
misalnya,
Perhatikan bahwa ini berlaku untuk koleksi lain (misalnya, daftar dan kamus) juga dan tidak hanya tupel.
sumber
key: value,
per baris, dan tidak mengurusi koma saat menambahkan hal baru.Keuntungan lain dari membuntuti koma adalah membuat diff terlihat lebih bagus. Jika Anda mulai dengan
dan mengubahnya menjadi
Perbedaannya akan terlihat seperti ini
Sedangkan jika Anda memulai dengan tanda koma, seperti
Maka perbedaannya hanya akan terjadi
sumber
Ini opsional: lihat wiki Python .
Ringkasan: tupel elemen tunggal membutuhkan tanda koma , tetapi ini opsional untuk tupel multi-elemen.
sumber
Juga, pertimbangkan situasi yang Anda inginkan:
Jadi dalam hal ini tanda kurung luar tidak lebih dari mengelompokkan tanda kurung. Untuk membuatnya menjadi tuple, Anda perlu menambahkan tanda koma. yaitu
sumber
Tanda koma diperlukan untuk tupel satu elemen saja. Memiliki tanda koma untuk tupel yang lebih besar adalah masalah gaya dan tidak diperlukan. Keuntungan terbesarnya adalah clean diff pada file dengan tupel besar multi-baris yang sering dimodifikasi (misalnya tupel konfigurasi).
sumber
Itu jawaban yang sederhana.
a = ("s") adalah string
dan
a = ("s",) adalah tupel dengan satu elemen.
Python membutuhkan koma tambahan jika ada satu elemen tupel untuk, membedakan antara string dan tupel.
Misalnya coba ini di konsol python:
a = ("s")
a = a + (1,2,3)
Traceback (panggilan terakhir terakhir):
File stdin, baris 1, di modul
TypeError: tidak dapat menggabungkan objek 'str' dan 'tuple'
sumber
Alasan lain mengapa ini ada adalah membuat pembuatan kode dan
__repr__
fungsi lebih mudah untuk ditulis. Misalnya, jika Anda memiliki beberapa objek yang dibangun sepertiobj(arg1, arg2, ..., argn)
, maka Anda dapat menulisobj.__repr__
sebagaiJika tanda koma tidak diizinkan, Anda harus menggunakan kasus khusus pada argumen terakhir. Sebenarnya, Anda bisa menulis di atas dalam satu baris menggunakan pemahaman daftar (saya telah menuliskannya lebih panjang agar lebih mudah dibaca). Tidak akan mudah melakukannya jika Anda harus menghadapi kasus khusus pada semester terakhir.
sumber
join
dalam kasus itu:def __repr__(self): 'obj(' + ', '.join([repr(arg) for arg in obj.args]) + ')'
.join
.PEP 8 - Panduan Gaya untuk Kode Python - Kapan Menggunakan Trailing Comma
Tanda koma biasanya opsional, kecuali koma tersebut wajib saat membuat tupel dari satu elemen (dan dalam Python 2, koma memiliki semantik untuk pernyataan cetak). Untuk kejelasan, disarankan untuk mengapit tanda kurung (secara teknis berlebihan).
Iya:
Oke, tapi membingungkan:
Jika tanda koma berlebihan, tanda koma sering kali berguna saat sistem kontrol versi digunakan, saat daftar nilai, argumen, atau item yang diimpor diharapkan diperpanjang seiring waktu. Polanya adalah menempatkan setiap nilai (dll.) Pada baris dengan sendirinya, selalu menambahkan tanda koma, dan menambahkan tanda kurung tutup / tanda kurung / kurung kurawal pada baris berikutnya. Namun tidak masuk akal untuk memiliki tanda koma pada baris yang sama dengan pembatas penutup (kecuali dalam kasus tupel tunggal di atas).
Iya:
Tidak:
sumber
Gaya pengkodean adalah selera Anda, Jika menurut Anda pengkodean itu penting, ada PEP-8 yang dapat memandu Anda.
Apa pendapat Anda tentang hasil ekspresi berikut?
Ya, x hanyalah sebuah angka.
sumber