The Pythonic Way

En estos últimos días he estado leyendo un montón de documentación de Python para un proyecto que traigo. Específicamente, estoy intentando terminar un conjunto de pruebas unitarias que ya se me hace tarde para entregar. En algunos de esos documentos me he encontrado con un curioso término: “The Pythonic Way” o “Pythonic code”. Lo pongo en inglés porque se lee y se oye más bonito además de que no encuentro una traducción al español igual de genial. Una traducción sería “el estilo Pythonico” o “el estilo pitónico”. Suena como a albur.

Me puse a investigar un poco sobre el tema y resulta ser un estilo de programación propio de Python que aprovecha las fortalezas e idiosincracias de Python para escribir código conciso y elegante. Según esta respuesta en Quora que recomiendo que lean porque está muy bien redactada, el código que no es “Phytonico” tiende a verse raro, sobrecargado o complejo, muy verboso y difícil de entender.

Para muestra, un botón. Vamos a comparar como se ve un código, que si bien es correcto, utiliza lógica genérica y no es “Pythonico”, contra un código que hace exactamente lo mismo pero que es considerado “Pythonico”. El código fue tomado de este enlace

Problema: encontrar el número más grande en una lista no ordenada

Solución 1. Busca, busca, busca.

numbers = [1, 5, 9, 7, 7, 8, 4, 10, 4, 12, 16, 7, 89, 27, 67]
def get_max(l):
    m = l[0]
    for x in l:
        if x > m:
            m = x
    return m
print(get_max(numbers))

El fragmento de arriba utiliza lógica genérica que puede ser implementada en cualquier otro lenguaje y que recuerda mucho el tipo de lógica que se utiliza en C.

Solución 2. Ordena primero la lista.

El siguiente código ordena la lista de forma ascendente y luego toma el último elemento de la lista. Utiliza un método sort() que forma parte del objeto numbers que contiene la lista. Para los que crecimos programando en C o en Pascal ese método sort sería reemplazado por algún algoritmo de ordenamiento escrito orgullosamente por nosotros mismos como el de la burbuja para empezar. (En los 90’s se enseñaba Pascal como lenguaje de programación en el Tec de Celaya. Los de sistemas eran más sofisticados pues les enseñaban C también).

numbers = [1, 5, 9, 7, 7, 8, 4, 10, 4, 12, 16, 7, 89, 27, 67]
# sorting in ascending order
numbers.sort()
# last number accessing
print(numbers[len(numbers) - 1])

Solución 3. The Phytonic Way.

numbers = [1, 5, 9, 7, 7, 8, 4, 10, 4, 12, 16, 7, 89, 27, 67]
print(max(numbers))

Aquí utilizamos la función max(), de la extensa librería de cajón de Python, que acepta una lista y devuelve el valor máximo. Duro y directo a la cabeza. Eficiente como una pitón.

Si Python es nuestro lenguaje consentido, debemos tirarle a escribir código “Pythonico” como parte de nuestro desarrollo personal y profesional. De hecho hay muy buenos jales en Guadalajara para desarrolladores Python y estoy seguro que los mejores sueldos se les asignan a personas capaces de escribir código “Pythonico” de manera fluida. He visto anuncios solicitando programadores Python que andan pagando MNX$50,000.00 libres.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *