Saltar al contenido principal

Tutorial de módulos de Python: Importarlos, escribirlos y utilizarlos

Aprende a crear e importar módulos de Python. ¡Descubre las mejores prácticas, ejemplos y consejos para escribir código Python reutilizable, organizado y eficiente!
Actualizado 28 mar 2025  · 8 min de lectura

Como principiante, empiezas a trabajar con Python en el intérprete. Más adelante, cuando necesites escribir programas más largos, empezarás a escribir guiones. A medida que tu programa aumente de tamaño, es posible que quieras dividirlo en varios archivos para facilitar el mantenimiento y la reutilización del código. La solución son los módulos. Puedes definir tus funciones más utilizadas en un módulo e importarlo, en lugar de copiar sus definiciones en distintos programas. Un módulo puede ser importado por otro programa para hacer uso de su funcionalidad. Así también puedes utilizar la biblioteca estándar de Python.

En pocas palabras, un módulo es un archivo formado por código Python. Puede definir funciones, clases y variables, y también puede incluir código ejecutable. Cualquier archivo de Python puede referenciarse como módulo. Un archivo que contiene código Python, por ejemplo: test.py se denomina módulo, y su nombre sería test.

Existen varios métodos para escribir módulos, pero el más sencillo es crear un archivo con extensión .py, que contenga funciones y variables.

Antes de empezar a escribir tus propios módulos, te recomiendo que eches un vistazo a nuestro curso Introducción a Python para la Ciencia de Datos, que cubre los fundamentos del lenguaje de programación Python.

Aprende Python desde cero

Domina Python para la ciencia de datos y adquiere habilidades muy demandadas.
Empieza a aprender gratis

Importar módulos en Python

Para utilizar la funcionalidad presente en cualquier módulo, tienes que importarlo a tu programa actual. Tienes que utilizar la palabra clave import junto con el nombre del módulo deseado. Cuando el intérprete se encuentra con una sentencia import, importa el módulo a tu programa actual. Puedes utilizar las funciones dentro de un módulo utilizando el operador punto (.) junto con el nombre del módulo. En primer lugar, vamos a ver cómo utilizar los módulos de la biblioteca estándar. En el ejemplo siguiente, el módulo math se importa en el programa para que puedas utilizar la función sqrt().

import math  # Import the math module
num = 4
print(math.sqrt(num))  # Call the sqrt() function from the math module

Por razones de eficacia, cada módulo sólo se importa una vez por sesión de interpretación. Por tanto, si cambias tus módulos, debes reiniciar el intérprete.

Si sólo quieres probar un módulo de forma interactiva, utiliza reload(), por ejemplo: reload(module_name). En Python 3, tienes que importar importlib antes de utilizar reload():

import importlib
importlib.reload(module_name)

Cómo escribir tus propios módulos Python

Ahora que has aprendido a importar un módulo en tu programa, es el momento de escribir el tuyo propio y utilizarlo en otro programa. Escribir un módulo es como escribir cualquier otro archivo de Python. Empecemos escribiendo una función para sumar/restar dos números en un archivo calculation.py.

def add(x,y):
    return (x+y)
def sub(x,y):
    return (x-y)

Si intentas ejecutar este script en la línea de comandos, no ocurrirá nada porque no has ordenado al programa que haga nada. Crea otro script Python en el mismo directorio con el nombre module_test.py y escribe en él el siguiente código.

import calculation            #Importing calculation module
print(calculation.add(1,2))   #Calling function defined in the calculation module 

Si ejecutas module_test.py, verás "3" como salida. Cuando el intérprete se encontró con la sentencia import, importó el módulo calculation en tu código y luego, utilizando el operador punto, pudiste acceder a la función add().

Otras formas de importar módulos en Python

Hay más formas de importar módulos:

  • from .. import declaración
  • from .. import * declaración
  • cambiar el nombre del módulo importado

Utilizando from module import name

La sentencia from..import te permite importar funciones/variables concretas de un módulo en lugar de importarlo todo. En el ejemplo anterior, al importar calculation en module_test.py se importaron las funciones add() y sub(). Pero, ¿y si sólo necesitaras la función add() en tu código? He aquí un ejemplo para ilustrar el uso de from..import.

from calculation import add
print(add(1,2))

En el ejemplo anterior, sólo se importa y utiliza la función add(). ¿Notas el uso de add()? Ahora puedes acceder a él directamente sin utilizar el nombre del módulo. También puedes importar varios atributos, separándolos con una coma en la sentencia de importación. Mira el siguiente ejemplo:

from calculation import add,sub

Utilizando from module import *

Puedes importar todos los atributos de un módulo utilizando esta sentencia. Esto hará que todos los atributos del módulo importado sean visibles en tu código.

He aquí un ejemplo para ilustrar el uso de from .. import *:

from calculation import *
print(add(1,2))
print(sub(3,2))

Ten en cuenta que, en el mundo profesional, debes evitar el uso de from..import y from..import*, ya que hace que tu código sea menos legible.

Renombrar módulos en Python

Puedes cambiar el nombre del módulo que estás importando, lo que puede ser útil en los casos en que quieras dar un nombre más significativo al módulo o el nombre del módulo sea demasiado grande para utilizarlo repetidamente. Puedes utilizar la palabra clave as para cambiarle el nombre. El siguiente ejemplo explica cómo utilizarlo en tu programa.

import calculation as cal
print(cal.add(1,2))

Te has ahorrado tiempo de mecanografía renombrando calculation como cal.

Ten en cuenta que ahora ya no puedes utilizar calculation.add(1,2), puesto que calculation ya no se reconoce en tu programa.

Ruta de búsqueda de módulos en Python

Puede que necesites que tus módulos se utilicen en distintos programas o proyectos y que su ubicación física en el directorio sea diferente. Si quieres utilizar un módulo que reside en otro directorio, tienes algunas opciones que te ofrece Python.

Cuando importas un módulo llamado calculation, el intérprete busca primero un módulo incorporado con ese nombre. Si no lo encuentra, busca entonces un archivo llamado calculation.py en una lista de directorios dada por la variable sys.path. sys.path contiene estas ubicaciones:

  • El directorio que contiene el script de entrada (o el directorio actual)

  • PYTHONPATH (una lista de nombres de directorio con la misma sintaxis que la variable de shell PATH)

  • El valor por defecto dependiente de la instalación

Supongamos que module_test.py está en el directorio /home/datacamp/, y que has movido calculation.py a /home/test/. Puedes modificar sys.path para incluir /home/test/ en la lista de rutas, en la que el intérprete de Python buscará el módulo. Para ello, tienes que modificar module_test.py de la siguiente manera:

import sys
sys.path.append('/home/test/')

import calculation
print(calculation.add(1,2))

Archivos compilados en bytes en Python

Importar un módulo aumenta el tiempo de ejecución de los programas, por lo que Python tiene algunos trucos para acelerarlo. Una forma es crear archivos compilados en bytes con la extensión .pyc.

Internamente, Python convierte el código fuente en una forma intermedia llamada bytecode. Luego lo traduce al idioma nativo de tu ordenador y lo ejecuta. Este archivo .pyc es útil cuando importes el módulo la próxima vez desde un programa diferente: será mucho más rápido, ya que una parte del procesamiento necesario para importar un módulo ya está hecho. Además, estos archivos compilados en bytes son independientes de la plataforma.

Ten en cuenta que estos archivos .pyc suelen crearse en el mismo directorio que los archivos .py correspondientes. Si Python no tiene permiso para escribir en los archivos de ese directorio, no se crearán los archivos .pyc. Estos archivos suelen almacenarse en el directorio __pycache__ junto a tus archivos .py.

La función dir() de Python

La función dir() sirve para averiguar todos los nombres definidos en un módulo. Devuelve una lista ordenada de cadenas que contienen los nombres definidos en un módulo.

import calculation
print(calculation.add(1,2))
print(dir(calculation))

Salida:

['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'add', 'sub']

En la salida, puedes ver los nombres de las funciones que has definido en el módulo, add & sub. El atributo __name__ contiene el nombre del módulo. Todos los atributos que empiezan por guión bajo son atributos por defecto de Python asociados a un módulo.

Conclusión

Crear un módulo es necesario para gestionar mejor el código y reutilizarlo. Python te proporciona algunos módulos incorporados, que pueden importarse utilizando la palabra clave import. Python también te permite crear tus propios módulos y utilizarlos en tus programas. Te proporciona archivos compilados en bytes para superar el coste de utilizar módulos, lo que hace que la ejecución sea más rápida. Puedes utilizar dir() para conocer los atributos definidos en el módulo que se utiliza en un programa. Se puede utilizar tanto en módulos predefinidos como en módulos definidos por el usuario.

Si quieres aprender más sobre Python, puedes echar un vistazo a nuestro curso Python Intermedio para la Ciencia de Datos.

Preguntas frecuentes

¿Puedo importar un módulo dentro de una función?

Sí. Puedes importar módulos dentro de funciones, pero normalmente es mejor importar al principio del archivo para mayor claridad y rendimiento.

¿Qué ocurre si dos módulos tienen el mismo nombre?

Python importará la primera coincidencia que encuentre en la ruta de búsqueda de módulos (sys.path). Ten cuidado con los nombres para evitar conflictos.

¿Tengo que compilar mi módulo a .pyc manualmente?

No. Python crea automáticamente archivos .pyc cuando importas un módulo, si tienes permisos de escritura.

¿Cómo puedo comprobar de dónde se importa un módulo?

Utiliza el atributo __file__ del módulo:

import math
print(math.__file__)

¿Está bien utilizar from module import *?

Funciona, pero no se recomienda en código de producción. Puede contaminar el espacio de nombres y dificultar el seguimiento de lo que se utiliza.

¿Puedo recargar un módulo después de editarlo?

Sí, en una sesión interactiva, utiliza importlib.reload():

import importlib
import mymodule
importlib.reload(mymodule)
Temas

¡Aprende más sobre Python con estos cursos!

Curso

Introduction to Python

4 hr
6.2M
Master the basics of data analysis with Python in just four hours. This online course will introduce the Python interface and explore popular packages.
Ver detallesRight Arrow
Comienza el curso
Ver másRight Arrow
Relacionado

Tutorial

Tutorial de Excel en Python: La guía definitiva

Aprende a leer e importar archivos Excel en Python, a escribir datos en estas hojas de cálculo y a encontrar los mejores paquetes para hacerlo.

Natassha Selvaraj

15 min

Tutorial

Una Introducción al Subproceso Python: Conceptos básicos y ejemplos

Explora nuestra guía paso a paso para ejecutar comandos externos utilizando el módulo de subprocesos de Python, completa con ejemplos.
Moez Ali's photo

Moez Ali

15 min

Tutorial

Tutorial de funciones de Python

Un tutorial sobre funciones en Python que cubre cómo escribir funciones, cómo invocarlas y mucho más.
Karlijn Willems's photo

Karlijn Willems

14 min

Tutorial

Tutorial sobre cómo ejecutar scripts en Python

Aprenda cómo puede ejecutar un script Python desde la línea de comandos, y también cómo puede proporcionar argumentos de línea de comandos a su script.
Aditya Sharma's photo

Aditya Sharma

10 min

Tutorial

Tutorial Python Docstrings : Ejemplos y Formato de Cadenas Doc Pydoc, Numpy, Sphinx

Aprende sobre las Docstrings de Python. Encuentra diferentes ejemplos y tipos de formato de docstrings para Sphinx, Numpy y Pydoc.
Aditya Sharma's photo

Aditya Sharma

15 min

Tutorial

Tutorial de Pickle en Python: Serialización de objetos

Descubre el módulo pickle de Python: aprende sobre serialización, cuándo (no) usarla, cómo comprimir objetos pickle, multiprocesamiento ¡y mucho más!
Natassha Selvaraj's photo

Natassha Selvaraj

12 min

Ver másVer más