arrow_back Volver
Inicio keyboard_arrow_right Artículos keyboard_arrow_right Artículo

8 Consejos de Python después de 8 años de utilizarlo

Eduardo Ismael Garcia

Full Stack Developer at Código Facilito.

av_timer 7 Min. de lectura

remove_red_eye 7587 visitas

calendar_today 15 Septiembre 2023

Hola mi nombre es Eduardo, y como ya leíste en el título del vídeo, el día de hoy me gustaría listar 8 consejos que, en los personal, me hubieran sido muy útiles cuando comencé a dar mis primeros pasos como desarrollador Python.

Los consejos no están listados en orden de importancia, tampoco se encuentran enfocados en un área en particular. Son consejos enfocados, principalmente, en el cómo escribir mejor código en python, vaya, código pythonico.

El vídeo será sumamente interesante, y no dudo que algunos de estos consejos te sirvan en tu día a día y puedas sacarle el máximo provecho posible, así que te invito a que te quedes.

Bien, sin más dilación, comencemos con el vídeo.

1.- Entornos virtuales. 🐲

De lo primero que me gustaría hablar es acerca del uso de entornos virtuales. Los entornos virtuales a grandes rasgos son espacios aislados donde es posible instalar de forma segura todas las dependencias que nuestro proyecto necesite.

Pues bien, mi primer consejo del día es, haz uso de entornos virtuales, crea el hábito de usarlos todos el tiempo.

No importa si tu proyecto es grande o pequeño, si este necesita de por lo menos una librería, módulo o Framework que no se encuentre en la biblioteca estándar de Python, crea, configura y usa en el entorno.

Se que al principio puede ser tedioso. Sin duda alguna lo más sencillo es simplemente instalar todo lo que necesitemos a nivel sistema operativo y listo. Sin embargo a la larga lo mejor que podemos hacer, para evitar conflictos entre versiones, es siempre mantener aislados nuestros proyectos unos de otros. Y para ello debemos hacer uso de entornos virtuales.

Haz uso de ellos, y sácale provecho a la portabilidad que Python nos ofrece.

Hazte el hábito de usarlos todo el tiempo, con la práctica verás que crearlos te será casi intuitivo.

Un proyecto nuevo, un nuevo entorno.

2.- Uso de decoradores. 🐘

Siguiendo con el tema de, al principio es tedioso, pero luego es sumamente provechoso, (vaya, rimo) sin duda alguna no puedo dejar pasar la oportunidad de hablar sobre decoradores.

Los decoradores son este hermoso feature que nos ofrece Python. Nosotros podemos añadir nuevas funcionalidades a funciones sin la necesidad de modificar su código, sin necesidad de re escribirlas, simplemente decoramos.

Tengo que admitir que los decoradores son complicados de comprender y sobre todo de llevar código.

Son muchos los conceptos que debemos tener presentes para poder implementarlos de forma correcta. Me refiero a conceptos como:

  • Ciudadanos de primera clase
  • Closures
  • Scopes
  • Parámetros arbitrarios Args , Kwargs etc…

Si alguien nuevo en programación o en Python ve esto:

def decorator(func):
    def wrapper(*args, **kwargs):
       result = func(*args, **kwargs)
       return result
    return wrapper

Probablemente se pregunte si programar es para él.

Si bien los decoradores no son un tema trivial, el uso correcto de estos de permitirá crear código mucho más legible, código modular, fácil de leer y sobre todo fácil de mantener.

Con ellos  (los decoradores) podremos crear funciones atómicas, donde estas se dediquen a hacer una y solo una tarea. Con el uso de decoradores nos desharemos de líneas de código duplicadas, simplemente abstraernos y reutilizamos un N cantidad de veces.

Te lo puedo asegurar, una vez comprendas y comiences a implementar decoradores tu código se verá reducido y será mucho más mantenible. Además que los querrás utilizar en todos lados. Bueno, por lo menos a mi me paso.

3.- Trabajo con números grandes. 🐧

De lo complicado pasemos a algo un poco más sencillo. Un consejo que puedo darte para mejorar la legibilidad de tu código es que, siempre que necesites representar números grande.

Por ejemplo, cien mil millones, dejemos un lado el representarlos de esta forma.

number = 100000000000

y obtenemos por el uso del guión abajo.

number = 100_000_000_000

Para los seres humanos se nos es mucho más fácil leer cantidades grandes si separamos por grupos de dígitos, y bueno, en Python es posible hacerlo mediante guiones bajos.

Esto va a funcionar perfectamente y tú puedes seguir haciendo uso de ese número como de costumbre, puedes usarlo para operaciones de suma, resta, multiplicación etc…

Es un consejo más que nada para la legibilidad del código.

4.- Uso de Docstrings. 🐙

Siguiendo con el tema de código legible, este consejo va para que documenten tu código.

Sí, se que documentar es algo que a no todos los programadores nos agrada, por supuesto me incluyo, pero realmente es necesario.

Y en Python podemos documentar haciendo uso de comentarios, pero no de comentarios cualquiera, si no de docstrings.

Verás, el docstring es un comentario que se coloca con triple comillas dobles (o simples) en la primera línea de cualquier objeto documentable (Módulos, clases, métodos y funciones).

Veamos un ejemplo.

def palindromo(sentencia):
    """Comprueba si una cadena de texto es un palíndromo.
    Args:
        sentencia (str): La cadena de texto que se va a comprobar como palíndromo.

    Returns:
        bool: True si la cadena es un palíndromo, False en caso contrario.
    """
    # Convertir la cadena a minúsculas y eliminar espacios
    sentencia = sentencia.lower().replace(' ', '')
    
    # Comprobar si la cadena original es igual a su inversa
    return sentencia == sentencia[::-1]

Al nostros hacer esto Python reconoce el comentario en la primera línea y almacena este comentario en el atributo doc de nuestro objecto.

Con esto, haciendo uso de la función help podremos conocer más acerca de cómo, en este ejemplo, la función funciona, que argumentos necesita y que valores va a retornar.

>>>help(palindromo)

palindromo(sentencia)
Comprueba si una cadena de texto es un palíndromo.

Args:
sentencia (str): La cadena de texto que se va a comprobar como palíndromo.

Returns:
bool: True si la cadena es un palíndromo, False en caso contrario.

Simplemente dejamos un comentario y listo, estaremos documento nuestro código.

5.- Testea tu código. 🐢

Aunado a todo esto, con los docstrings seremos capaces de probar nuestro código, si, como escuchaste, mediante comentarios podremos probar funcionalidades.

Y esto me lleva a mi quinto concejo: Prueba tu código.

En Python existen diferentes formas de testear/probar funcionalidades. En este caso, si eres una persona nueva con el lenguaje te recomiendo comenzar a testear tu código con los docstrings/ con los comentarios.

Para el ejemplo anterior, basta con colocar, dentro del comentario, un par de casos de prueba. No muchos, quizás uno o dos.

Colocamos con qué argumentos llamamos a la función y que debería retornar la función.

def palindromo(sentencia):
   """Permite conocer si un str es, o no, un palíndromo.

    Examples
    --------
    >>> palindromo('Anita lava la tina')
    True

    >>> palindromo('Se van sus naves')
    True

    >>> palindromo('PyWombat')
    False
    """

    sentencia = sentencia.lower().replace(' ', '')
    return sentencia == sentencia[::-1]

Una vez con las pruebas dentro de los comentarios, lo siguiente que debemos hacer es ejecutar el siguiente comando en consola.

python -m doctest <module>.py

Para mi ejemplo.

python -m doctest <module>.py

Si ejecutamos, y el comando no retorna nada entonces todas pruebas han pasado de forma exitosa. En caso contrario, en caso alguna de las pruebas no pase, una excepción será lanzada en consola.

Ojo, este tipo de pruebas no deben sustituir a las pruebas unitarias. Debemos verlas cómo un complemento a estas. Aprovechando que estamos documentando mediante comentarios ¿por qué no probar el correcto funcionamiento?

6.- Uso de Anotaciones y Type Hints. 🐻

Siguiendo con el listado de consejos, uno que considero muy valioso es el uso de anotaciones y type hints, un feature que ha impulsado mucho python en sus últimas versiones.

Al hacer uso de anotaciones y type hints daremos mucho más contexto a los programadores sobre que con que tipo de datos se pretende trabajar.

Python, como sabemos, es un lenguaje de tipado dinámico, así que es probable que ciertas variables vayan cambiando de tipo a lo largo del programa, lo cual no es una buena idea.

Si una variable comienza almacenando un string, pero finaliza almacenando un arreglo, entonces quiere decir que no estás siguiendo buenas prácticas de programación.

Para solventar esto podemos dejar explícitamente plasmado que las variables son de un tipo en particular, usando anotaciones y type hints.

Veamos un ejemplo.

def suma(a: int, b: int) -> int:
    """
    Esta función toma dos enteros y devuelve su suma.

    Args:
        a (int): El primer número entero.
        b (int): El segundo número entero.

    Returns:
        int: La suma de a y b.
    """
    return a + b

En este ejemploo no dejamos espacio a la ambigüedad. Definimos de que tipo serán las variable y que tipo de dato retornará nuestra función.

Esto resulta sumamente últil para mejorar la legibilidad de nuestro código y respetar estandarés de códificación.

Si bien es cierto podemos programar sin anotaciones, la verdad es que te recomiendo comenzar a usarlas lo más pronto posible.

7.- Explora Bibliotecas y Frameworks. 🐊

Mi septimo consejor es: Esplora bibliotecas y frameworks.

Sí, se que python ya viene con baterias incluidas, y ya nos ofrece una gran cantidad de funcionalidades al alcance de un import. A pesar de ellos habrán cosas que la biblioteca estandar de python no nos ofrezca o sea dificiles de utilizar. Es por ello que te invito a buscar esas gemas ocultas en el repositorio de Python las cuales pueden hacerte la vida más sencilla y productiva.

Aquí te listo algunas

  • iPython
  • requests
  • SQLAlchemy / Peewee
  • pandas
  • decouplet
  • python-dotenv

Entre otras muchas muchas más.

Tomate el tiempo, investiga y comienza a usar dependencias de terceros, te serán de mucha útilidad. Te aseguro que hay una librería que ya cubre tus necesidades. Y si no hay, creala.

8.- Utiliza buenas prácticas de programación. 🐍

Y ya para finalizar mi último consejo es, implementa buenas prácticas de programación y sigue los estándares descritos por la comunidad Python mediante los diferentes PEPs

Si, se que puede sonar algo obvio, pero en muchas ocasiones podemos pasamos por alto estos puntos o simplemente podemos no conocerlos.

En Python existen “reglas” de codificación que se recomiendan seguir. Reglas cómo: usar 4 espacios, nombre de variables, funciones y métodos con snake case, 2 saltos de línea para separar funciones, longitud de líneas no mayores a 79 caracteres etc…

Estas “reglas” no difieren en cómo nuestro programa va a funcionar, pero si todo codificamos de la misma forma, con los mismos estándares y siguiendo las mejores prácticas en la industria, no habrá ningún tipo de problema si una persona externa se une al proyecto. Además que nuestro código será mucho más legible y sobre todo mantenible.

Letras finales. 🌱

Listo, esto son 8 consejos que en lo particular me hubiera encantado conocer al dar mis primeros pasos con Python. Creo que me hubieran ahorrado muchos doles de cabeza y mi código hubiera sido mucho más limpio y eficiente desde un principio.

Son 8, sin embargo me quedo con muchos más consejos en el tintero. Quizás tengamos una segunda parte. Si te agrada la idea dejanozlo saber en los comentarios.

De igual forma te reitero, estos por supuesos son mis consejos, sin embargo te invito a que dejes los tuyos en la caja de comentarios, me encantaría leer que consejo nos das a la comunidad.

Bien, sin más creo que esto sería todo, nos estaremos viendo en otro ocasión.

Y recuerda escribir código Pythonico. 🍻