¿Usar '{}' dentro de las cadenas de formato se considera Pythonic?

9

Acabo de enterarme de que puedes escribir

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

en vez de

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

en Python, es decir, puede omitir los números para los parámetros de formato de cadena cuando desee que las cosas se coloquen una por una en orden.

¿Se considera esto pitónico?

NOTA: "Pythonic" es un término comúnmente usado entre los programadores de Python para referirse al código idiomático de Python. Dentro de la cultura Python, tiende a existir un claro consenso sobre las preguntas de estilo, especialmente para preguntas muy específicas como esta, dada la filosofía de diseño explícita del lenguaje de "Debe haber una, y preferiblemente una, forma obvia de hacerlo". Esto se cita de "The Zen of Python", un conjunto de aforismos que ayuda mucho a definir qué es "Pythonic" y que se incluye con cada distribución de Python (en cualquier línea de comando del intérprete de Python, ingrese import thispara verlo).

Ghopper21
fuente
44
@GregHewgill: "Pythonic" es un término bastante usado que básicamente significa "Python idiomático"; el tipo de código Python que los aficionados al código Python de calidad encontrarían estilísticamente agradable.
Carson63000
1
Esta característica muy específica está claramente incluida en Python (no es realmente una pregunta de estilo), entonces, ¿por qué no se consideraría "Pythonic" por alguna definición razonable? Hasta donde yo sé, no hay características del lenguaje que se consideren "antipáticas".
Greg Hewgill
44
Como referencia, la {}característica se introdujo en Python 3.1 . La mejora que provocó esta adición fue el problema 5237 . Guido tiene varios comentarios sobre ese tema, incluyendo "Por favor, adelante y termine esto. ¡Me alegra que esto esté entrando!" Si eso no se considera "Pitónico", no sé qué es.
Greg Hewgill
44
Para las personas que votan para cerrar esta pregunta, ¿puedo señalar que lo que es o no Pythonic es una parte importante de la cultura de codificación de Python, y diría que la cultura de codificación es un elemento importante de la ingeniería de software, un tema aceptado de este sitio.
Ghopper21
2
@Andrea: eso fue exactamente lo que pensé por primera vez, pero es difícil argumentar que el BDFL cree que no es Pythonic. Después de ver la cita de él sobre esto, volví a mirar el Zen de Python nuevamente, y pensé que tal vez este es un caso de "practicidad supera la pureza". La justificación de la discusión (vinculada en la respuesta de Greg) se basa en la conveniencia para el escritor del código. Y, en cualquier caso, la forma más explícita de utilizar el formato de cadena es en "{a}{b}".format(a=string_a, b=string_b)lugar de la numeración. De todos modos, eso es solo mi especulación y lectura entre líneas en el pensamiento ...
Ghopper21

Respuestas:

12

La {}característica se introdujo en Python 3.1 (y también se exportó a Python 2.7). La mejora que provocó esta adición fue el problema 5237 . Guido tiene varios comentarios sobre ese tema, que incluyen:

Por favor, adelante y termina esto. ¡Me alegra que esto esté entrando!

Una característica con ese tipo de respaldo de la BDFL ciertamente se consideraría "Pythonic" por cualquier medida.

Greg Hewgill
fuente