Biçim dizelerinde '{}' kullanmak Pythonic olarak kabul ediliyor mu?


9

Az önce yazabileceğini öğrendim

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

onun yerine

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

Python'da, bir şeylerin sırayla sırayla yerleştirilmesini istediğinizde dize biçimi parametreleri için sayıları atlayabilirsiniz.

Bu Pythonic mi?

NOT: "Pythonic" deyimsel Python kodunu ifade etmek için Python programcıları arasında yaygın olarak kullanılan bir terimdir. Python kültürü içinde, dilin "Bunu yapmanın bir - ve tercihen sadece bir - açık bir yolu olmalı" şeklinde açık tasarım felsefesi göz önüne alındığında, özellikle bu gibi çok spesifik olanlar için stil soruları üzerinde açık bir fikir birliği vardır. Bu, "Pythonic" 'in ne olduğunu tanımlamak için uzun bir yol kat eden ve Python'un her dağıtımına dahil olan (herhangi bir Python yorumlayıcı komut satırında import thisgörmek için girilen ) bir dizi aforizma olan "Python'un Zen'i" nden alıntılanmıştır .


4
@GregHewgill: "Pythonic" temel olarak "idiomatic Python" anlamına gelen oldukça yaygın kullanılan bir terimdir; kalite Python kodunun meraklılarının stilistik olarak hoş bulacağı Python kodu türü.
Carson63000

1
Bu çok özel özellik açıkça Python'a dahil edilmiştir (gerçekten bir stil sorusu değildir), bu yüzden neden makul bir tanımla "Pythonic" olarak kabul edilmesin? Bildiğim kadarıyla, dilin "unPythonic" olarak kabul edilen hiçbir özelliği yoktur.
Greg Hewgill

4
Başvuru için, {}özellik Python 3.1'de tanıtıldı . Bu eklemeye neden olan geliştirme, sayı 5237'dir . Guido'nun "Lütfen devam edin ve bunu bitirin. Bu içeriye girdiği için mutluyum!" Eğer bu "Pitonik" olarak değerlendirilmezse, ne olduğunu bilmiyorum.
Greg Hewgill

4
Bu soruyu kapatmak için oy kullanan insanlara, sadece Pythonic'in ne olup olmadığını Python kodlama kültürünün önemli bir parçası olduğuna işaret edebilir miyim ve kodlama kültürünün yazılım mühendisliğinin önemli bir unsuru olduğunu kabul ediyorum. bu site.
Ghopper21

2
@Andrea - ilk düşüncem tam olarak buydu, ancak BDFL'nin Pythonic olmadığını düşündüğünü iddia etmek zor. Bu konuda onun teklifini gördükten sonra tekrar Python'un Zen'ine baktım ve belki de bunun "pratikliğin saflığı aştığı" bir durum olduğunu düşündüm. Tartışmadaki mantık (Greg'in cevabına bağlı olarak) kod yazarı için kolaylıktır. Ve her durumda, dize biçimlendirmesini kullanmanın en açık yolu "{a}{b}".format(a=string_a, b=string_b)numaralandırma yerine. Her neyse, bu sadece benim spekülasyon ve düşünme satırları arasında okuma ...
Ghopper21

Yanıtlar:


12

Bu {}özellik Python 3.1'de tanıtıldı (ve ayrıca Python 2.7'ye aktarıldı). Bu eklemeye neden olan geliştirme, sayı 5237'dir . Guido'nun bu konuda birkaç yorumu var:

Lütfen devam edin ve bitirin. Bunun içeri girmesine sevindim!

BDFL'nin bu tür onayına sahip bir özellik, herhangi bir önlemle kesinlikle " Pitonik " olarak kabul edilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.