En muchos sitios web, a menudo veo comentarios de que el código no es pitónico o que hay una forma más pitónica de lograr el mismo objetivo.
¿Qué significa pythonic en este contexto? Por ejemplo, ¿por qué
while i < someValue:
do_something(list[i])
i += 1
no pitónico mientras
for x in list:
doSomething(x)
es pitónico?
Respuestas:
Aprovechar las características del lenguaje Python para producir un código claro, conciso y fácil de mantener.
Pythonic significa código que no solo tiene la sintaxis correcta, sino que sigue las convenciones de la comunidad de Python y usa el lenguaje de la manera en que está destinado a ser usado.
Esto es quizás más fácil de explicar con un ejemplo negativo, como en el artículo vinculado de las otras respuestas. Los ejemplos de código no pitónico a menudo provienen de usuarios de otros lenguajes, que en lugar de aprender patrones de programación de Python, como listas de comprensión o expresiones generadoras, intentan utilizar la palanca en los patrones más comúnmente utilizados en C o Java. Los bucles son ejemplos particularmente comunes de esto.
Por ejemplo, en Java podría usar
for i in (i; i < items.length ; i++) { n = items[i]; ... now do something }
En Python podemos intentar replicar esto usando bucles while, pero sería más limpio de usar
for i in items: i.perform_action()
O incluso una expresión generadora
(i.some_attribute for i in items)
Entonces, esencialmente, cuando alguien dice que algo no es pitónico, está diciendo que el código podría reescribirse de una manera que se ajuste mejor al estilo de codificación de pitones.
Escribir
import this
en la línea de comandos ofrece un resumen de los principios de Python. Menos conocido es que el código fuente deimport this
es decididamente, y por diseño, ¡no pitónico! Échale un vistazo para ver un ejemplo de lo que no debes hacer.fuente