En este tutorial vamos a explorar los módulos de Python, uno de los mecanismos que podemos usar en Python para la programación modular.
La programación modular es el proceso de dividir una tarea de programación grande y difícil de manejar en subtareas o módulos separados más pequeños y manejables. Las ventajas de modularizar el código en una aplicación grande son las siguientes:
Simplicidad: en lugar de centrarse en todos los problemas que soluciona la aplicación, un módulo normalmente se centra en un problema específico. Si estás trabajando en un solo módulo, tendrás un problema más pequeño para entender. Esto hace que el desarrollo sea más fácil y menos propenso a errores.
Capacidad de mantenimiento: si los módulos se escriben pensando en minimizar la dependencia con otros módulos, existe una menor probabilidad de que las modificaciones a un solo módulo tengan un impacto en otras partes del programa. Es posible que incluso pueda realizar cambios en un módulo sin tener ningún conocimiento de la aplicación fuera de ese módulo. Esto hace que sea más viable para un equipo de muchos programadores trabajar en colaboración en una aplicación grande.
Reutilización: la funcionalidad definida en un solo módulo se puede reutilizar por otras partes de la aplicación. Esto elimina la necesidad de duplicar el código.
Alcance: los módulos generalmente definen un espacio de nombres o namespace
separado, lo que ayuda a evitar colisiones entre identificadores en diferentes áreas de un programa.
En Python hay tres tipos de módulos:
re
(expresión regular).itertools
.Se accede al contenido de un módulo de la misma manera en los tres casos: con la declaración de importación import
.
En este tutorial nos vamos a centrar en los módulos que están escritos en Python. Lo bueno de los módulos escritos en Python es que son extremadamente sencillos de construir. Todo lo que necesitas hacer es crear un archivo que contenga código Python y luego darle al archivo un nombre con extensión .py
.
Por ejemplo: podemos crear un archivo llamado platzi_mod.py
que contenga lo siguiente:
slogan = "Nunca pares de aprender."
prices = [39, 212, 244]
defprint_this(arg):
print(f'platzi = {arg}')
classPlatzi:
pass
Varios objetos se definieron en platzi-mod.py
:
Suponiendo que platzi-mod.py
está en una ubicación adecuada, sobre la que aprenderás más en breve, se puede acceder a estos objetos importando el módulo de la siguiente manera usando el REPL de Python:
>>> import platzi_mod
>>> print(platzi_mod.slogan)
Nunca pares de aprender.
>>> platzi_mod.prices
[39, 212, 244]
>>> platzi_mod.print_this(['se', paga, 'solo'])
platzi = ['se', paga, 'solo']
>>> course = platzi_mod.Platzi()
>>> course
0x03C181F0>
Continuando con el ejemplo anterior, vamos a profundizar en lo que sucede cuando Python ejecuta la siguiente declaración:
import platzi_mod
Cuando el intérprete ejecuta la declaración de importación anterior, busca platzi-mod.py
en una lista de directorios que obtiene a partir de las siguientes fuentes:
PYTHONPATH
, si está configurada. El formato de PYTHONPATH
depende del sistema operativo, pero debe imitar la variable de entorno PATH
.Puedes acceder a la lista de directorios usados para la búsqueda de módulos en la variable de Python sys.path
, que se obtiene de un módulo llamado sys
.
El contenido exacto de sys.path
depende de la instalación. Es casi seguro que el siguiente ejemplo se verá diferente en tu computadora.
>>> import sys
>>> sys.path
['', '/home/platzi/.pyenv/versions/3.8.11/lib/python3.8/site-packages']
Por lo tanto, para estar seguro de que el intérprete de Python encuentre tu módulo, debes realizar una de las siguientes acciones:
platzi-mod.py
en el directorio donde se encuentra el script de entrada o en el directorio actual si estás usando el intérprete de forma interactiva.PYTHONPATH
para que contenga el directorio donde se encuentra platzi-mod.py
antes de iniciar el intérprete o coloca platzi-mod.py
en uno de los directorios que ya están incluidos en la variable PYTHONPATH
.platzi-mod.py
en uno de los directorios dependientes de la instalación, al que puede o no tener acceso de escritura, según el sistema operativoEn realidad, hay una opción adicional: puedes colocar el archivo del módulo en cualquier directorio de tu elección y luego modificar sys.path
en tiempo de ejecución para que contenga ese directorio. Por ejemplo, en este caso, podrías poner platzi-mod.py
en el directorio C: \Users\platzi
y luego ejecutar los siguientes comandos:
>>> sys.path.append(r'C:\Users\platzi)
>>> sys.path
['', '/home/platzi/.pyenv/versions/3.8.11/lib/python3.8/site-packages', 'C:\\Users\\platzi']
>>>import platzi_mod
Una vez que se ha importado un módulo, puedes determinar la ubicación donde se encontró con el atributo __file__
del módulo:
>>> import mod
>>> mod.__file__'C:\\Users\\platzi'\\mod.py'
La parte del directorio del output de __file__
debe ser uno de los directorios listados por sys.path
.
En este tutorial se cubrieron los siguientes temas:
Espero que esto te permita comprender mejor cómo obtener acceso al mecanismo de módulos disponible en Python.
Da el siguiente paso en tu formación de Python con el curso de FastApi