Módulos que definen funciones¶
Supongamos el siguiente programa:
| Circulo.py | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
Aquí tenemos tres identificadores que podríamos en un fichero aparte, de forma que sean reutilizables en varios proyectos:
- valor de PI
- función
perimetro() - función
area()
Crear un módulo con definiciones¶
Colocamos esas definiciones en un archivo MisFunciones.py:
| MisFunciones.py | |
|---|---|
1 2 3 4 5 6 7 8 9 | |
De forma que el programa principal queda así:
| Circulo.py | |
|---|---|
1 2 3 4 | |
Vemos que:
- Los módulos a utilizar en nuestro programa han de importarse.
- Las funciones de módulos importados van precedidas por el nombre del módulo.
Podríamos importar directamente las funciones:
| Circulo.py | |
|---|---|
1 2 3 4 | |
Ruta de importación¶
Python busca los módulos importados:
- en la misma carpeta que el programa principal
- en las carpetas definidas por el sistema
¿Cuales son las carpetas donde se ubican los módulos de Python?
Lo podemos averiguar importando el módulo sys y examinando la lista sys.path:
>>> import sys
>>> for carpeta in sys.path:
... print(carpeta)
/home/usuario/proyectos/circulo
/home/usuario
/usr/bin
/usr/lib/python3.13
/usr/lib/python3.13/lib-dynload
/usr/local/lib/python3.13/dist-packages
/usr/lib/python3/dist-packages
Cada sistema operativo es un mundo y tiene sus propias rutas. En este ejemplo vemos que primero se busca en la misma carpeta que el programa principal.
El directorio __pycache__¶
Cuando el intérprete de Python ejecuta un programa, toma el texto de las instrucciones y hace una traducción "al vuelo", obteniendo el mismo programa en formato de ceros y unos, algo que es conocido como "lenguaje máquina", y que el ordenador es capaz de entender y ejecutar.
En el caso de importar un módulo, este también se traduce. Pero para evitar
tener que estar haciendo esta compilación cada vez que ejecutamos el programa,
automáticamente se guarda el módulo en formato binario en un archivo especial
con extensión .pyc (python compilado) en una carpeta llamada __pycache__,
dentro de la misma carpeta que el módulo.
Los archivos dentro de la carpeta __pycache__ se reconstruirán si el intérprete
de Python detecta que el módulo ha sido modificado.
Los archivos .pyc tienen el mismo nombre que el módulo en cuestión, a lo que
se añade la palabra cpython seguido por la versión de Python que estamos
utilizando.