Apakah menggunakan '{}' dalam format string dianggap Pythonic?

9

Saya baru tahu Anda bisa menulis

'{}{}'.format(string_a, string_b)

dari pada

'{0}{1}'.format(string_a, string_b)

dalam Python, yaitu Anda dapat menghilangkan angka untuk parameter format string ketika Anda ingin segala sesuatunya dimasukkan secara berurutan.

Apakah ini dianggap Pythonic?

CATATAN: "Pythonic" adalah istilah yang umum digunakan di kalangan programmer Python untuk berarti kode Python idiomatik. Dalam budaya Python, cenderung ada konsensus yang jelas tentang pertanyaan gaya, terutama untuk yang sangat spesifik seperti ini, mengingat filosofi desain eksplisit bahasa "harus ada satu - dan lebih disukai hanya satu - cara yang jelas untuk melakukannya." Ini dikutip dari "The Zen of Python," satu set aforisme yang jauh menuju definisi apa yang "Pythonic" dan yang disertakan dengan setiap distribusi Python (pada setiap baris perintah juru bahasa Python, masukkan import thisuntuk melihatnya).

Ghopper21
sumber
4
@GregHewgill: "Pythonic" adalah istilah yang cukup umum digunakan yang pada dasarnya berarti "idiomatik Python"; jenis kode Python yang disukai oleh penggemar kode Python berkualitas dengan gaya.
Carson63000
1
Sangat spesifik ini fitur jelas termasuk dalam Python (itu tidak benar-benar sebuah pertanyaan gaya), jadi mengapa tidak itu dianggap "Pythonic" oleh definisi yang masuk akal? Sejauh yang saya tahu, tidak ada fitur bahasa yang dianggap "unPythonic".
Greg Hewgill
4
Untuk referensi, {}fitur ini diperkenalkan dengan Python 3.1 . Peningkatan yang mendorong penambahan ini adalah masalah 5237 . Guido memiliki beberapa komentar tentang masalah itu, termasuk, "Silakan dan selesaikan ini. Saya senang ini masuk!" Jika itu tidak dianggap "Pythonic", saya tidak tahu apa itu.
Greg Hewgill
4
Kepada orang-orang yang memberikan suara untuk menutup pertanyaan ini, bolehkah saya tunjukkan bahwa apa itu Pythonic adalah bagian penting dari budaya pengkodean Python, dan saya berpendapat budaya pengkodean adalah elemen penting dari rekayasa perangkat lunak, subjek yang diterima dari situs ini.
Ghopper21
2
@Andrea - itulah yang pertama kali saya pikirkan, tetapi sulit untuk membantah bahwa BDFL menganggapnya tidak Pythonic. Setelah melihat kutipannya tentang hal ini, saya kembali menatap Zen Python lagi, dan berpikir mungkin ini adalah kasus "kepraktisan mengalahkan kemurnian"? Alasan dalam diskusi (terkait dalam jawaban Greg) adalah tentang kenyamanan bagi penulis kode. Dan dalam hal apa pun, sebenarnya cara paling eksplisit untuk menggunakan pemformatan string "{a}{b}".format(a=string_a, b=string_b)bukan penomoran. Bagaimanapun, itu hanya spekulasi saya dan membaca yang tersirat pada pemikiran ...
Ghopper21

Jawaban:

12

The {}fitur yang diperkenalkan di Python 3.1 (dan juga backported untuk Python 2.7). Peningkatan yang mendorong penambahan ini adalah masalah 5237 . Guido memiliki beberapa komentar tentang masalah itu, termasuk:

Silakan lanjutkan dan selesaikan ini. Saya senang ini masuk!

Fitur dengan dukungan semacam itu dari BDFL tentu akan dianggap "Pythonic" dengan ukuran apa pun.

Greg Hewgill
sumber