Primeras herramientas de Python

Aprende sobre los módulos que incluye la instalación de Python y cómo usarlos.

Sabemos que Python es un lenguaje de programación potente y versátil. Aunque gran parte de todo ese poder es debido a la innumerable colección de bibliotecas que ha desarrollado la comunidad y que podemos instalar, existen módulos muy útiles que nos pueden ahorrar muchísimo tiempo y que vienen ya preinstalados con Python.

Estos son los llamados módulos built-in que tendremos siempre a nuestra disposición sin tener que realizar ninguna instalación adicional. En este artículo haremos un recorrido por varios de los más usados y daremos ejemplos de código Python para que aprendas cómo sacar provecho de ellos. Vamos a ir recorriéndolos uno a uno.

Módulo math

Algunas veces tenemos que enfrentarnos a operaciones matemáticas que nos complican la vida como funciones trigonométricas y logaritmos. Otras veces necesitamos obtener valores precisos para constantes matemáticas como pi o e. Para estos casos tenemos a nuestra disposición el módulo math.

Lo podemos usar para calcular áreas de círculos, distancias entre dos puntos en el espacio, resolver ecuaciones, etc. A continuación incluimos unos ejemplos:

import math

# Calcula el area de un círculo con radio 5
radius = 5
area = math.pi * radius**2
print(area)

# Calcula la distancia entre los puntos (3, 4) y (0, 0)
x1, y1 = 3, 4
x2, y2 = 0, 0

# Aquí math.sqrt es una función que calcula la raíz cuadrada
distance = math.sqrt((x1 - x2)**2 + (y1 - y2)**2)
print(distance)

Hoy en día tenemos potentes bibliotecas para computación científica como Numpy o Scipy pero con el módulo math podemos resolver muchos problemas sin necesidad de instalar bibliotecas tan extensas como las anteriores.

Módulo random

Con este módulo podemos añadir aleatoriedad a nuestro código. Gracias a él podemos hacer cosas como generar un número aleatorio, seleccionar un elemento de un conjunto de manera también aleatoria, o barajar los elementos de un conjunto de modo que queden en cualquier orden sin especificar.

Esto es muy útil. Piensa en todos los programas que necesitan tener aleatoriedad. Desde tu reproductor de música cuando seleccionas el modo reproducción aleatoria hasta los videojuegos donde no sabes nunca donde aparecerá un enemigo o en qué lugar se encuentra lo que buscas. A medida que vamos adquiriendo experiencia en el mundo de la programación comprendemos más la necesidad de agregar eventos aleatorios a nuestros programas.

Estos son unos ejemplos sencillos de cómo puedes usar el módulo random:

import random

# Genera un número entero aleatorio entre 1 y 100
print(random.randint(1, 100))

# Selecciona un color aleatorio de una lista de varios colores
colors = ['red', 'blue', 'green']
print(random.choice(colors))

# Baraja la lista anterior de modo que los colores cambian de orden
random.shuffle(colors)
print(colors)

A partir de ahora puedes divertirte más usando la aleatoriedad.

Módulo datetime

Si no te haz roto la cabeza tratando de resolver problemas que involucran fechas y horas entonces no has programado lo suficiente. Precisamente este tipo de problemas se utiliza mucho como práctica en las primeras clases de programación de cualquier curso introductorio.

No obstante, en el mundo real los problemas que involucran fechas siguen siendo muy frecuentes. Afortunadamente, Python nos ofrece un módulo para trabajar con fechas que nos hace la vida increíblemente fácil. Compruébalo en los siguientes ejemplos:

from datetime import datetime

# Crea un objeto fecha con la fecha y la hora actuales
now = datetime.now()
print(now)

# Crea un objeto fecha a partir de un año, mes y día específicos
birthday = datetime(1995, 7, 18)
print(birthday)

# Calcula la diferencia entre dos fechas
diff = now - birthday
print(diff)

# Convierte la fecha a formato YYYY-MM-DD hh:mm:ss
formatted_date = now.strftime('%Y-%m-%d %H:%M:%S')
print(formatted_date)

Este es uno de esos módulos que siempre te acompaña a donde vayas. Incorpóralo a tu caja de herramientas.

Módulo os

Este módulo nos abre una vía para usar funcionalidades que dependen del sistema operativo. Por ejemplo, cuando queremos crear, leer, editar o borrar archivos en un ordenador. Estas son operaciones muy comunes en el día a día de cualquier programador/a como también lo son crear nuevos procesos y gestionar directorios.

Toda esta amplia gama de funcionalidades la obtenemos del módulo os y aquí te dejamos ejemplos para que aprendas cómo ponerlo en acción:

import os

# Obtiene el directorio de trabajo actual
print(os.getcwd())

# Crea un nuevo directorio
os.mkdir('new_directory')

# Borra un directorio
os.rmdir('new_directory')

# Renombra un archivo (old_file.txt pasa a llamarse new_file.txt)
os.rename('old_file.txt', 'new_file.txt')

Módulo csv

Los archivos en formato CSV son muy utilizados para almacenar y procesar datos. Estos archivos representan tablas y se pueden visualizar con cualquier editor de texto como Microsoft Excel o Google Sheets. Tienen además la ventaja de que su codificación es muy simple. Si abrimos un archivo CSV con un editor de texto menos sofisticado como el Notepad de Windows o el Gedit de Ubuntu, nos damos cuenta que podemos leer las palabras que conforman la tabla. Esto no ocurre con otros formatos que codifican la información de una manera que solamente es legible en determinados editores.

Python nos brinda un módulo para interactuar fácilmente con los archivos en formato CSV. Esto es especialmente útil cuando queremos realizar tareas sencillas con estos archivos de forma que no tenemos que instalar una biblioteca tan extensa como Pandas. He aquí un ejemplo:

import csv

# Escribe datos en un archivo CSV
data = [['Name', 'Age'], ['Alice', 25], ['Bob', 30]]
with open('data.csv', 'w') as file:
    writer = csv.writer(file)
    writer.writerows(data)

# Lee datos de un archivo CSV existente 
with open('data.csv', 'r') as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)

Módulo json

Y hablando de formatos que se usan con frecuencia en la programación no podemos olvidar al que posiblemente sea el más usado de todos. El formato JSON se utiliza en numerosas aplicaciones. Es famoso sobre todo por ser el formato en el que las aplciaciones web se envían datos de un extremo al otro.

Siendo JSON un formato tan importante, Python claramente incluye un módulo que nos permite realizar todo tipo de operaciones con este formato. Estos son solamente dos ejemplos de la gran variedad de opciones que nos brinda el módulo json de Python:

import json

# Convierte un diccionario de Python a un string en formato JSON
data = {'name': 'Alice', 'age': 25}
json_data = json.dumps(data)
print(json_data)

# Carga un archivo JSON existente a un objeto en Python
with open('data.json', 'r') as file:
    json_data = json.load(file)
    print(json_data)

Módulo re

Dejamos para el final el que quizás sea el más complejo. Pero no por esto es menos útil. Este módulo nos brinda la posibilidad de trabajar con expresiones regulares.

Las expresiones regulares se utilizan para comprobar que un determinado texto cumple con un cierto patrón. Por ejemplo, cuando un sitio web detecta que una dirección de correo electrónico no es correcta es porque utilizó una expresión regular para definir el patrón correcto que debe tener toda dirección de correo electrónico. Existen otras muchas aplicaciones de las expresiones regulares aunque este concepto es un poco más complejo de comprender.

Mejor te mostramos algunos ejemplos que ilustran mejor estos casos de uso:

import re

# Valida una dirección de correo electrónico
email = 'alice@example.com'

"""
Este es el patrón que estamos analizando.
No te preocupes si no lo comprendes ahora mismo,
solamente te mostramos que así se define el patrón
de una dirección de correo electrónico válida en Python
"""
pattern = '[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}'

is_valid = re.match(pattern, email)
if is_valid:
    print(email, 'dirección de email válida')
else:
    print(email, 'dirección de email inválida')



# Busca un patrón en un texto
text = 'El número es 42'

"""
En este caso el patrón es que el texto contenga
al menos un número entero.

\d: representa un número entero
+: representa una o más ocurrencias del patrón
"""
pattern = '\d+'

search_results = re.search(pattern, text)

if search_results:
    print('Número encontrado:', search_results.group())
else:
    print('Número no encontrado')

Conclusiones

En este artículo hemos hecho una lista de algunos de los módulos que incluye la instalación de Python. Esta lista no es exhaustiva, existen muchos otros módulos más que puedes utilizar. Los que incluimos aquí son algunos de los que se usan con más frecuencia de acuerdo a nuestra experiencia y a lo que hemos podido investigar.

Ahora es tu turno de ponerte manos a la obra. Te recomendamos que pruebes estos ejemplos de código por tu cuenta y experimentes todo lo que quieras para que logres dominar estas herramientas que forman parte del día a día de toda persona experta en Python.

También te puede interesar:

Did you find this article valuable?

Support Blog CodeXL by becoming a sponsor. Any amount is appreciated!