¿Te gustaría aprender todo sobre Python?
Tenemos el curso que necesitas. ¡Haz clic aquí!
Aunque Python cumplió 30 años el año pasado (2021), sólo en los últimos años ha disfrutado de la gran explosión de adopción, crecimiento y desarrollo con visión de futuro que hemos llegado a asociar con el lenguaje. Muchas características de Python han permanecido inalteradas desde su creación, pero con cada año que pasa, y cada nueva edición de Python, llegan nuevas formas de hacer las cosas y nuevas bibliotecas que aprovechan esos avances.
Así que Python tiene sus viejas formas y sus nuevas formas. Naturalmente, tiene sentido aprender a trabajar con Python utilizando sus características más modernas y convenientes. Aquí repasaremos los conceptos clave que necesitas entender para escribir Python moderno en 2022, es decir, el software que utiliza los últimos y mejores modismos, conceptos y capacidades de Python.
Sugerencia de tipo en Python
La recientemente introducida sintaxis de sugerencia de tipos de Python permite a los linters y a las herramientas de calidad de código de terceros analizar tu código antes del tiempo de ejecución, y detectar posibles errores antes de que se produzcan. Cuanto más creas código Python para compartirlo con otros, más probable es que tú (y todos los demás) se beneficien del uso de las sugerencias de tipo.
Cada revisión sucesiva de Python despliega anotaciones de tipo más sofisticadas y potentes. Si adquieres el hábito de aprender a utilizar las anotaciones de tipo a corto plazo, estarás mejor equipado para hacer uso de cada nueva innovación de sugerencias de tipo a medida que se introducen.
Es importante recordar que las anotaciones de tipo son opcionales, no obligatorias. No todos los proyectos los necesitan. Utiliza las sugerencias de tipo para hacer comprensibles sus proyectos más grandes, pero siéntete libre de omitirlas en un guión de 50 líneas. Y ten en cuenta que, aunque las sugerencias de tipo no se imponen en tiempo de ejecución, puedes usar Pydantic para hacerlo posible. Muchos proyectos de Python ampliamente utilizados, como FastAPI, utilizan Pydantic con amplitud.
Entornos virtuales de Python y gestión de paquetes
Para proyectos simples y trabajos de desarrollo poco exigentes, a menudo se puede utilizar la herramienta venv incorporada de Python para mantener los proyectos y sus requisitos separados. Pero los recientes avances en las herramientas de Python te dan más opciones:
- Pyenv: Si necesitas mantener varias versiones de Python instaladas (3.8, 3.9, 3.10) para satisfacer los requisitos de diferentes proyectos, Pyenv te permite cambiar entre ellas, ya sea globalmente o por proyecto. Es útil si te encuentras haciendo mucho trabajo con diferentes ediciones de Python directamente en la línea de comandos, fuera del contexto de un entorno virtual por proyecto. Ten en cuenta que no hay soporte oficial para Windows, pero existe un puerto no oficial para Windows.
- Pipenv: Anunciado como «flujo de trabajo de desarrollo de Python para humanos», Pipenv está destinado a gestionar un entorno virtual más todas las dependencias para su proyecto. También se asegura de que las dependencias sean deterministas, es decir, que obtengas las versiones específicas que quieres y que funcionen en la combinación que pides. Sin embargo, Pipenv no habla de empaquetar de ninguna forma, así que no es ideal para proyectos que eventualmente quieras subir a PyPI o compartir con otros.
- Poetry: Ampliando el conjunto de herramientas de Pipenv, Poetry no sólo gestiona proyectos y requisitos, sino que también facilita el despliegue del proyecto en PyPI. También gestiona entornos virtuales para ti, separados de los directorios de tu proyecto.
- PDM: PDM (abreviatura de «Python Development Master») es el proyecto más reciente y vanguardista en esta línea. Al igual que Poetry y Pipenv, PDM te proporciona una única interfaz para configurar un proyecto, gestionar sus dependencias y construir artefactos de distribución a partir de él. PDM también utiliza el estándar PEP 582 para almacenar paquetes localmente en un proyecto, por lo que no es necesario crear entornos virtuales por proyecto. Pero esta herramienta es relativamente nueva, así que asegúrate de que funciona provisionalmente antes de adoptarla en producción.
Nueva sintaxis de Python
La evolución de Python ha supuesto muchas novedades en el propio lenguaje. Las últimas versiones de Python han añadido útiles construcciones sintácticas que permiten una programación más potente y sucinta. Algunas adiciones recientes son:
Coincidencia de patrones
La mayor adición reciente, la concordancia de patrones estructurales, que llegó en Python 3.10, es algo más que «switch/case para Python», como se ha descrito a veces. Permite tomar decisiones de flujo de control basadas en el contenido o la estructura de los objetos.
El ‘operador morsa’
Llamado así por su apariencia (:=), el «operador morsa», añadido en Python 3.8, introduce las expresiones de asignación, una forma de asignar un valor a una variable y luego aplicar una prueba a la variable en un solo paso. Hace que el código sea menos verboso en muchas situaciones comunes, como la comprobación del valor de retorno de una función al tiempo que se conservan los resultados.
Parámetros sólo posicionales
Una pequeña pero útil adición reciente a la sintaxis de Python, los parámetros sólo posicionales, permiten indicar qué parámetros de función deben especificarse como posicionales, no como argumentos de palabra clave. Las razones para hacer esto generalmente implican mejorar la claridad y facilitar el desarrollo futuro de una base de código, objetivos en los que también se centran muchas de las otras nuevas características de Python.
Pruebas en Python
Escribir pruebas para un código base es como usar el hilo dental a diario: todo el mundo está de acuerdo en que es algo bueno, pero pocos lo hacen, y aún menos lo hacen correctamente. Las bases de código Python modernas merecen tener suites de pruebas, y las herramientas actuales para las pruebas consiguen que crear suites de pruebas sea más fácil que nunca.
Python tiene su propio marco de pruebas incorporado, Unittest, y aunque Unittest no es malo pordefecto, su diseño y comportamientos son anticuados. El Pytest framework se ha convertido en un sustituto común. Es más flexible (puedes declarar pruebas en cualquier parte de tu código, no sólo en un subconjunto) y requiere escribir mucho menos código repetitivo. Además, Pytest tiene un montón de complementos para ampliar su funcionalidad (por ejemplo, para probar el código asíncrono).
Otro complemento importante para las pruebas es la cobertura del código, que determina la cantidad de código base que las pruebas realmente cubren. El módulo Coverage lo tiene, er, cubierto para esto, y Pytest incluso viene con un plug-in para trabajar con él.
Te invitamos a ver todos nuestros artículos que tenemos para ti, coméntanos que tal te pareció este articulo y compártelo con más personas.
¿Te gustaría aprender todo sobre Python?
Tenemos el curso que necesitas. ¡Haz clic aquí!