Primeros pasos con Python
21 febrero, 2020 por
Primeros pasos con Python
Administrator
| No comments yet

Primeros pasos con Python. Instalaci贸n del entorno, paqueter铆a, y un ejemplo con expresiones regulares y por supuesto TESTS.

脥ndice de contenidos

1. Consideraciones iniciales

Dado que la versi贸n considerada como oficial es la 3.x, en este tutorial trabajaremos sobre la versi贸n 3.6.0 de Python. De manera extraoficial la versi贸n 2.7 est谩 ampliamente extendida, y es posible que encontremos muchas aplicaciones que est谩n escritas en esta versi贸n o librer铆as espec铆ficas que no est茅n soportadas en la nueva versi贸n.

Debemos tener en cuenta que entre ambas versiones hay un cambio de major, lo que supone que es bastante probable que tengamos que hacer modificaciones al c贸digo original si necesitamos que corra bajo la nueva versi贸n o plantearnos el utilizar la 2.7.

No obstante, casi todo lo explicado en este tutorial es f谩cilmente extrapolable a ambas versiones.

El tutorial est谩 escrito usando el siguiente entorno:

  • Hardware: Port谩til MacBook Pro Retina 15鈥 (2.5 Ghz Intel Core I7, 16GB DDR3).
  • Sistema Operativo: macOS Sierra 10.12.2
  • Entorno de desarrollo: PyCharm Professional 2017.1 EAP
  • Python 3.6

1.1. Objetivo del tutorial

En este tutorial aprenderemos a instalar el int茅rprete Python y su gesti贸n de paquetes.

Adem谩s, crearemos un peque帽o script que reciba argumentos de ejecuci贸n, y cuyo prop贸sito es validar el formato de un fichero CSV de entrada utilizando expresiones regulares.

1.2. Instalaci贸n de Python

Lo primero que debemos instalar es el propio Python. Para ello, algo tan simple como dirigirnos a su p谩gina web oficial y descargarnos el paquete instalable de la versi贸n que nos interese y que corresponda a nuestro sistema. Pod茅is acceder directamente desde聽aqu铆.

En algunos sistemas, por ejemplo en m谩quinas que ejecuten alguna distribuci贸n de Linux ya contaremos con una instalaci贸n de Python. La manera m谩s sencilla de saberlo es ejecutar el comando聽python3 --version

Si lo tenemos correctamente instalado podremos esperar un resultado similar a este:

Versi贸n Python instalada

2. Gesti贸n de paquetes en Python y librer铆as externas

Existen multitud de librer铆as que podemos incorporar a nuestros desarrollos para aumentar la funcionalidad de una manera sencilla. Existen algunas integradas en el propio Python, y podemos consultar la documentaci贸n en:聽The Python Standard Library

El propio Python cuenta con una herramienta para la gesti贸n de paquetes, llamada pip. Esta es la herramienta recomendada, aunque m谩s adelante comentaremos una segunda alternativa.

2.1. pip

Esta es la herramienta recomendada para la instalaci贸n de paquetes. Para la misma de la herramienta podremos dirigirnos a su p谩gina oficial:聽pip. Este paso no ser谩 necesario para distribuciones de Python a partir de la versi贸n 3.4, ya que聽pip聽est谩 incluido como parte del paquete oficial, y por lo tanto ya lo tendremos instalado. En cualquier caso, podemos consultar la documentaci贸n oficial sobre la instalaci贸n de paquetes en聽Installing Python Modules.

Instalar un paquete (o librer铆a) es tan sencillo como ejecutar el comando:

2.2. Macports

Podemos utilizar como alternativa espec铆fica para Mac la utilidad Macports. Esto nos servir谩 no s贸lo para este prop贸sito, sino como gestor de paquetes en general. Para ello, necesitaremos tener instaladas las herramientas de XCode:

Cuando contemos con ello, procedemos a instalar el gestor de paquetes macports desde:聽http://www.macports.org/聽y por fin podremos instalar los paquetes de Python necesarios mediante:

3. Librer铆as incluidas en el paquete est谩ndar

Disponemos de multitud de librer铆as incluidas en el paquete oficial, conocido como Python Standard Library (consultar en https://docs.python.org/3/library/). De las incluidas, las que utilizaremos en el tutorial son:

  • unittest: desarrollo de test unitarios
  • sys: par谩metros y funciones del sistema. Especialmente 煤til a la hora de recuperar argumentos de ejecuci贸n, como veremos despu茅s.
  • re: manejo de expresiones regulares
  • argparse: parseo de argumentos
  • logging: gesti贸n de logs
  • errno: errores est谩ndar predefinidos
  • cobertura: informe de lineas cubiertas por nuestros tests (incluye integraci贸n con el IDE y CLI)

4. Comenzando con el desarrollo

Todo desarrollo es la soluci贸n a un problema planteado. En nuestro caso, y para comenzar por algo muy sencillo, nos centraremos en validar el formato de un fichero para evitar problemas a la hora de procesarlo. Dicho fichero se recibir谩 como par谩metro de la ejecuci贸n. En caso de error, se indicar谩 su tipo y la l铆nea del fichero para poder corregirlo.

El formato de nuestro fichero es muy sencillo:
<nombre>;<apellido(s)>;<tel茅fono>;<email>
donde聽<email>聽es un valor opcional.

4.1. Al turr贸n

Crearemos un primer test encargado de comprobar si la expresi贸n regular que hemos dise帽ado acorde con el formato esperado se comporta de forma correcta.

Con fines did谩cticos y para ilustrar el trabajo con cadenas, tomaremos la aproximaci贸n inicial de validar el formato de cada campo por separado. La soluci贸n 贸ptima pasa por validar el registro en su conjunto aprovechando toda la potencia de las expresiones regulares.

Al desarrollar mediante TDD, podemos comprobar que los errores en tiempo de ejecuci贸n (recordad que Python es interpretado), son bastante explicativos. Haciendo uso de la librer铆a unittest incluida, obtendremos el siguiente c贸digo:

format_validator_test.py

Y la clase que hace pasar los tests:

format_validator.py

Como consecuencia del dise帽o con TDD, obtenemos una cobertura de test muy alta, en este caso concreto, del 100%.

4.2. Trabajando con par谩metros de entrada

Ahora que ya tenemos nuestra pieza de validaci贸n, lo 煤nico que nos queda por hacer es recibir un fichero como par谩metro y hacer pasar su contenido por nuestro validador. Para ello, lo primero es poder tratar los par谩metros de entrada.

Python provee una librer铆a para estos menesteres, y mediante la cual podemos conseguir un resultado bastante profesional:聽argparse.

El c贸digo final, con su informe de cobertura:

file_check_test.py
file_check.py


5. Conclusiones

Como hab茅is podido comprobar es tremendamente sencillo crear una aplicaci贸n desde 0 con este lenguaje. Adem谩s, el mismo lenguaje puede ser utilizado como script, orientado a objetos y seg煤n el paradigma de programaci贸n funcional.
Hay una comunidad muy activa de desarrolladores y un sin fin de librer铆as externas que nos permitiran aumentar su funcionalidad.

En futuros tutoriales ampliaremos el uso de Python en tareas de automatizaci贸n, machine learning, etc.

El c贸digo fuente est谩 disponible en el siguiente repositorio:聽https://github.com/ysegalb/python-tutorial.git
El mismo repositorio ir谩 creciendo con las nuevas lecciones que vayamos a帽adiendo.

5.1. Deberes para casa

Hay muchas mejoras y 鈥減eoras鈥 que podemos hacer con este ejemplo para cacharrear con el lenguaje. Desde aqu铆 os animamos a trabajar los siguientes cambios para que profundic茅is un poco m谩s en este lenguaje:

  • Modificar el tratamiento de csv a fichero de texto y validar mediante una 煤nica expresi贸n regular
  • Modificar la expresi贸n regular para que el correo sea de un dominio espec铆fico (p.e. @autentia.com)
  • A帽adir un nuevo campo URL opcional al fichero y validarlo
  • Mejorar la expresi贸n regular correspondiente al e-mail
  • Todo aquello que se os ocurra para 芦divertiros禄 con este lenguaje

6. Referencias

El tutorial se ha escrito desde cero, partiendo de la documentaci贸n oficial y las referencias ah铆 incluidas.

Primeros pasos con Python
Administrator
21 febrero, 2020
Share this post
Categor铆as
Editar
Archivar
Registrarse to leave a comment