Curso de programación en Python usando Linux. Decimotercera parte
Una de las mejores características de Python, como vimos en entregas anteriores del curso de programación en Python usando Linux, es que el código se puede reutilizar en otras partes de la aplicación o en otras aplicaicones.
En este post veremos cómo utilizar programas en otros programas sin necesidad de tener que pegar o tipear el código en ellos. Esto es útil porque python cuenta con una cantidad de librerías para tareas específicas que nos liberan del trabajo de «volver a reinventar la rueda».
Curso de programación en Python usando Linux
Hasta ahora lo que hacíamos era definir una función y llamarla en el momento en que la necesitamos. Ahora vamos a introducir el concepto de módulo. Un módulo es un archivo en el cuál se definieron funciones y clases y se declararon variables. Dado que los múdulos son archivos independientes, su utilización para construir proyectos grandes hace más fácil su mantenimiento y actualización.
Python incluye una serie de módulos para una diversa variedad de tareas y además podemos crear los nuestros.
Las ventajas de usar módulos son:
- Reutilización: Podemos escribir una sola vez un programa que haga una tarea específica (Por ejemplo calcular un impuesto) y llamarlo para ser utilizado en cuántos programas necesitemos esa función sin necesidad de volver a reescribir el código.
- Orden: Los módulos ayudan a dividir las partes del proyecto en forma lógica haciendo que cualquier persona con un mínimo conocimiento de Python pueda saber qué hace cada parte del programa.
- Mantenimiento: Cuánto más corto sea el código más fácil se hace encontrar errores y hacer modificaciones.
- Escalabilidad: En proyectos grandes la construcción modular hace que sea más fácil dividir y volver a unificar el trabajo.
- Librerías: Python pone a disposición d elos programadores una amplia gama de módulos que van desde la creacón de juegos a grandes proyectos de Inteligencia Artificial.
Para una correcta construcción de de un proyecto de Python en módulos hay que dividir y guardar las difeferentes partes en archivos con la extensión .py. Lo ideal es seguir los siguientes criterios:
- Identificar partes del código que cumplen funciones similares: Por ejemplo podemos agrupar en un módulo la captura de datos, en otro el procesamiento y en otro la salida y almacenamiento.
- Asignar nombres descriptivos: La idea es que cualquiera de una mirada pueda saber que hace cada módulo Si es un módulo de validación de datos es más útil llamarlo validación.py que 1234.py.
Vamos a crear un módulo con el nombre mostrar_distro.py. Este es el módulo:
Este módulo crea una función para imprimir e nombre de una distribución que se indicará en el programa que importe la función junto con el texto «La mejor distro es… No lo dudes»
Está es la aplicación que llama al módulo.
Este programa llama al módulo que guardamos previamente, invoca a la función distro y la ejecuta con el parámetro «Ubuntu. Si cambiamos algo en el módulo, como el texto que se muestra junto con el nombre de la distribución, se reflejará en el programa.
La instrucción import
Como vimos en el código, para importar un módulo hacemos
import nombre_modulo
No se agrega la extensión.py
Sin eambargo, no necesitamos importar todo el módulo. Podemos hacerlo con partes específicas:
from nombre_modulo import elemento1, elemento2
Para ahorrar tecleo o conflictos de nombres es posible asignarle un alias al módulo importado.
import nombre_moulo as nm
Usando nm en cualquier referencia al módulo en el nombre del código.
Si no queremos hacer referencia al módulo cada vez que invocamos a alguno de sus elementos podemos hacer:
from nombre_modulo import *
Esto nos permitirá llamar desde el código a cada elementos dle módulo como si lo hubiésemos definido en el mismo código. Aunque podría generar confictos con elementos existentes.
Ubicación de los mádulos
En el primer ariculo del curso explicamos el concepto de entornos virtuales. Esta práctica que es obligatoria en Ubuntu y otras distribuciones Linux y optativa en Windows crea una estructura de archivos que incluyen lugares para el almacenamiento de módulos. En general un módulo puede estar almacenado en tres lugares:
- El directorio donde está el programa principal que llama al módulo.
- Si lo instalaste mediante un gestor de paquetes, en la carpeta lib del entorno virtual.
- En directorios determinados por el usuario, se indica la ubicación en el comando import.
Tipos de módulos:
- Módulos estandar: Se incluyen en la instalación de Python y sirven para una amplia gama de las tareas más comunes que realizan los programadores como la generación de números aleatorios. No requieren de configuración adicional y su desarrollo está a cardo de los mismos desarrolladores que el lenguaje.
- Modulos desarrollados por elusuario: Responden a necesidades específicas de un proyectos y si se ponen a disposición de otros usuarios en foros o sitios de descarga no hay garantías de que haya soporte oficial o actualizaciones.
- Mantenidos por terceros: Se instalan mediante gestores de paquetes específicos y cumplen necesidades comunes a múltiples usuarios no cubiertas por los módulos estándar como por ejemplo mandar mensajes por WhatsApp. Aunque en muchos casos son mantenidos por empresas o usuarios responsables con documentación completa o actualizada, también se han encontrado paquetes maliciosos.
Algunos ejemplos de módulos estándar son:
- Math: Brinda soporte a funciones matemáticas como cálculo de raíces, trigonometría, logaritmos y constantes.
- Random: SIrve para la generación de números aleatorios y la selección aleatorias de elementos.
- Datetime: Manejo de calendario, trabajo con fechas y horas y cálculo de diferencias de tiempos.
- Os: Se ocupa de la interacción de la aplicación con el sistema operativo incluyendo el trabajo con archivos, directorios y variables de entorno.
El gestor de paquetes pip
Como tanos nombres del mudno del software libre, pip es el acrónimo recursivo en inglés para instalador de paquetes pip. Es la herramienta oficial para la instalación de modulos creados port terceros. La lista de paquetes disponibles podemos verla aquí.
Los comandos básicos son:
Instalar módulo
pip3 install nombre_modulo
Actualizar módulo
pip3 install --upgrade nombre_modulo.
Desinstalar módulo
pip3 uninstall nombre_modulo
En la siguiente entrega continuaremos con el curso.

