Czy używanie „{}” w ciągach formatu jest uważane za Pythonic?

9

Właśnie nauczyłem się, że możesz pisać

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

zamiast

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

w Pythonie, tzn. możesz pominąć cyfry parametrów formatu łańcucha, jeśli chcesz, aby elementy były umieszczane jeden po drugim w kolejności.

Czy to uważa się za Python?

UWAGA: „Pythonic” jest powszechnie używanym terminem wśród programistów Python, oznaczającym idiomatyczny kod Python. W kulturze Python istnieje wyraźny konsensus w kwestiach dotyczących stylu, szczególnie w przypadku bardzo specyficznych, takich jak ten, biorąc pod uwagę wyraźną filozofię projektowania języka: „Powinien istnieć jeden - a najlepiej tylko jeden - oczywisty sposób”. Jest to cytowane z „Zen Pythona”, zestawu aforyzmów, który idzie daleko w kierunku zdefiniowania, czym jest „Python” i który jest zawarty w każdej dystrybucji Pythona (w dowolnej linii poleceń interpretera Pythona, wejdź, import thisaby go zobaczyć).

Ghopper21
źródło
4
@GregHewgill: „Pythonic” jest dość często używanym terminem, który w zasadzie oznacza „idiomatyczny Python”; rodzaj kodu Python, który dla miłośników wysokiej jakości kodu Python byłby przyjemny stylistycznie.
Carson63000,
1
Ta bardzo specyficzna funkcja jest wyraźnie zawarta w Pythonie (tak naprawdę nie jest to pytanie o styl), więc dlaczego nie miałby być uważany za „Python” z jakiejkolwiek rozsądnej definicji? O ile mi wiadomo, nie ma cech tego języka, które są uważane za „niepythonic”.
Greg Hewgill,
4
Dla porównania, {}funkcja została wprowadzona w Pythonie 3.1 . Ulepszenie, które spowodowało to dodanie, to problem 5237 . Guido ma kilka komentarzy na ten temat, w tym „Proszę, zakończ to. Cieszę się, że to się dzieje!” Jeśli nie jest to uważane za „Pythonic”, nie wiem, co to jest.
Greg Hewgill,
4
Do ludzi, którzy głosują za zamknięciem tego pytania, czy mogę po prostu wskazać, że to, co jest Pythonic, czy nie, jest ważną częścią kultury kodowania Pythona, i twierdzę, że kultura kodowania jest ważnym elementem inżynierii oprogramowania, przyjętym tematem ta strona.
Ghopper21
2
@Andrea - dokładnie taka była moja pierwsza myśl, ale trudno argumentować, że BDFL uważa, że ​​nie jest Pythonem. Po obejrzeniu jego cytatu wróciłem do spojrzenia na Zen Pythona i pomyślałem, że może to jest przypadek „praktyczności pokonuje czystość”? Uzasadnienie dyskusji (połączone w odpowiedzi Grega) dotyczy wygody pisarza kodu. W każdym razie naprawdę najbardziej wyraźnym sposobem użycia formatowania ciągów jest "{a}{b}".format(a=string_a, b=string_b)numeracja. W każdym razie, to tylko moje spekulacje i czytanie między wierszami na temat myślenia ...
Ghopper21

Odpowiedzi:

12

Ta {}funkcja została wprowadzona w Pythonie 3.1 (a także przeniesiona do Pythona 2.7). Ulepszenie, które spowodowało to dodanie, to problem 5237 . Guido ma kilka uwag na ten temat, w tym:

Proszę, zakończ to. Cieszę się, że to się dzieje!

Funkcja z tego rodzaju aprobatą ze strony BDFL z pewnością byłaby pod każdym względem uważana za „pytoniczną”.

Greg Hewgill
źródło