O uso de '{}' dentro de cadeias de caracteres de formato é considerado Pythonic?

9

Acabei de aprender que você pode escrever

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

ao invés de

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

em Python, ou seja, você pode omitir os numerais dos parâmetros de formato de string quando quiser que as coisas se encaixem uma a uma em ordem.

Isso é considerado pitônico?

NOTA: "Pythonic" é um termo comumente usado entre programadores de Python para significar código Python idiomático. Na cultura Python, tende a haver um consenso claro sobre questões de estilo, especialmente para questões muito específicas como esta, dada a filosofia explícita de design da linguagem de "Deve haver uma - e preferencialmente apenas uma - maneira óbvia de fazer isso". Isso é citado em "O Zen do Python", um conjunto de aforismos que ajudam bastante a definir o que é "Pythonic" e que é incluído em todas as distribuições do Python (em qualquer linha de comando do interpretador do Python, entre import thispara vê-lo).

Ghopper21
fonte
4
@GregHewgill: "Pythonic" é um termo bastante usado que significa basicamente "Python idiomático"; o tipo de código Python que os aficionados por código Python de qualidade acham estilisticamente agradável.
Carson63000
11
Esse recurso muito específico está claramente incluído no Python (não é realmente uma questão de estilo); então, por que não seria considerado "Pythonic” por uma definição razoável? Até onde eu sei, não há recursos da linguagem que sejam considerados "não-pitônicos".
Greg Hewgill
4
Para referência, o {}recurso foi introduzido no Python 3.1 . O aprimoramento que levou a essa adição foi o problema 5237 . Guido tem vários comentários sobre esse assunto, incluindo "Por favor, vá em frente e termine isso. Estou feliz que isso esteja acontecendo!" Se isso não é considerado "pitonico", não sei o que é.
22813 Greg Hewgill
4
Para as pessoas que estão votando para encerrar esta questão, devo apenas salientar que o que é ou não Pythonic é uma parte importante da cultura de codificação Python, e eu argumentaria que a cultura de codificação é um elemento importante da engenharia de software, um assunto aceito por esse site.
Ghopper21
2
@ Andrea - isso é exatamente o que meu primeiro pensamento foi, mas é difícil argumentar que o BDFL acha que não é pitonico. Depois de ver a citação dele sobre isso, voltei a olhar o Zen de Python novamente e pensei que talvez este seja um caso de "praticidade supera pureza"? A justificativa da discussão (vinculada na resposta de Greg) é sobre conveniência para o redator de código. E, de qualquer forma, a maneira mais explícita de usar a formatação de strings é "{a}{b}".format(a=string_a, b=string_b)em vez da numeração. De qualquer forma, isso é apenas a minha especulação e ler entre as linhas do pensamento ...
Ghopper21

Respostas:

12

O {}recurso foi introduzido no Python 3.1 (e também suportado no Python 2.7). O aprimoramento que levou a essa adição foi o problema 5237 . Guido tem vários comentários sobre esse assunto, incluindo:

Por favor, vá em frente e termine isso. Estou feliz que isso está entrando!

Um recurso com esse tipo de endosso do BDFL certamente seria considerado "Pythonic" por qualquer medida.

Greg Hewgill
fonte