import

Sirve para incluir el módulo en el código pudiendo hacer uso de las clases y métodos incluidos en el mismo. Estos módulos pueden venir incluidos con Pyton, pueden ser archivos propios o de terceros locales o archivos externos descargados o instalados con la herramienta pip. Import seguido del nombre del paquete, se encarga de buscar el módulo, cargarlo, introducirlo en el código desde el que se importa e inicializarlo para poder hacer uso de todas sus clases y métodos o funciones.

Para ver un ejemplo práctico, habrá que crear una función en un fichero y guardar el fichero con el nombre mi_modulo.py. El fichero mi_modulo.py debe contener el siguiente código con la función cuentavocal(alista,avocal) que se encarga de buscar la vocal que se le pase en el argumento avocal en todas las palabras de argumento alista, contarlas y devolver el resultado.

def cuentavocal(alista,avocal):
    vocales = 0
    for palabra in lista:
        for letra in palabra:
            if letra == vocal:
                vocales += 1
    return vocales

Hay varias formas de incluir el fichero en el código aunque en todos los casos el denominador común es que se usa el comando import.

El primer caso puede ser el de importar el módulo completo. Haciendo esto se tiene acceso a todas las funciones del módulo, pero hay que escribir siempre en nombre del módulo antes de usarlas.

La sintaxis es:

import nombre_modulo

Para usar la función cuentavocal es necesario escribir mi_modulo.cuentavocal, como se muestra en el siguiente ejemplo.

>>> import mi_modulo
>>> lista = [ 'oso' , 'lobo' , 'pantera' , 'jirafa' , 'topo' ]
>>> print( mi_modulo.cuentavocal( lista , 'o' ) )
6

Si el nombre del módulo es muy largo o simplemente se quiere cambiar por otro nombre se puede usar un alias.

La sintaxis es:

import nombre_modulo as alias

El siguiente ejemplo muestra esta forma de importar el módulo.

import mi_modulo as mm
print(mm.cuentavocal(lista,'o'))

También es posible integrar el módulo en el código importando solamente la función necesaria, así se puede usar escribiendo solo su nombre. En este caso solo se ha importado esa función y por tanto no se pueden usar otras funciones del módulo si las hubiera.

La sintaxis es:

from nombre_modulo import nombre_función

Por ejemplo

from mi_modulo import cuentavocal
print(cuentavocal(lista,'o'))

La desventaja de este método es que podría ser que algunas funciones del módulo tuvieran el mismo nombre que las del script que estemos creando y entrar en conflicto.

También es posible hacer combinaciones, por ejemplo, cargar solo una función del módulo con un alias.

>>> from mi_modulo import cuentavocal as cv
>>> print( cv( lista , 'a' ) )
4

Cargar varias funciones del módulo.

>>> from nombre_modulo import función1 , función2 , función 3

Cargar varias funciones del módulo como alias.

>>> from nombre_modulo import función1 as f1 , función2 as f2 , función3 as f3

O incluso todas las funciones del módulo, aunque esto no está recomendado.

>>> from nombre_modulo import *

Python almacena la ubicación del módulo para poder cargarlo, para ver su ubicación se puede usar el método mágico __file__ como en el siguiente ejemplo.

>>> print(mi_modulo.__file__)
/proyectos/pythonparatodo/import/mi_modulo.py

En los casos anteriores se importaba un modulo que estaba en un fichero creado por nosotros, pero se aplica de la misma forma para módulos de Python o que se han descargado e instalado con pip.

En el ejemplo siguiente se importa el paquete os que contiene módulos y métodos para operar con el sistema y con los ficheros. También se hace uso del método getcwd() que devuelve el path actual.

>>> import os
>>> print(os.getcwd())
/proyectos/python/test

En el siguiente ejemplo se importa una parte del paquete para usar sólo el módulo join que se encuentra en os.path. Este método une dos o mas nombres de ruta, añadiendo el separador que corresponde al sistema operativo. Al hacer esto solo se añade la función join al código.

>>> from os.path import join
>>> print( join( 'proyectos' , 'fichero.txt' ) )
proyectos/fichero.txt

Si se intenta hacer uso de os.getcwd, al no estar importado el módulo completo, se produce un error.

>>> print( os.getcwd() )
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'os' is not defined

Suele ser recomendable importar solo las funciones necesarias para que el programa consuma menos memoria.

Cuando se usa import Python carga el módulo sin necesidad de saber dónde está, esto es gracias a que Python sabe en la ruta en la que se encuentra el programa o tiene almacenadas las rutas de los módulos en sys.path y se encarga de recorrer las rutas en orden buscando el módulo. Es posible ver las rutas donde Python guarda los módulos usando el siguiente código en MacOS.

>>> import sys
>>> print(sys.path)
['', '/Library/Frameworks/Python.framework/Versions/3.8/lib/python38.zip', '/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8', '/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/lib-dynload', '/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages']

O en Windows.

>>> import sys
>>> print(sys.path)
['', 'C:\\Program Files\\Python37\\python37.zip', 'C:\\Program Files\\Python37\\DLLs', ‘C:\\Program Files\\Python37\\lib', 'C:\\Program Files\\Python37', 'C:\\Program Files\\Python37\\lib\\site-packages', 'C:\\Program Files\\Python37\\lib\\site-packages\\win32', 'C:\\Program Files\\Python37\\lib\\site-packages\\win32\\lib', 'C:\\Program Files\\Python37\\lib\\site-packages\\Pythonwin']

Si se quiere importar un módulo que no está ni en la carpeta actual ni en la carpeta de módulos de Python, se puede hacer de varias formas:

Primera indicando la ruta tras el import, por ejemplo:

>>> import /proyectos/modulos/mi_modulo

Otra forma puede ser añadiendo la ruta donde están los módulos a sys.path con append, el siguiente ejemplo muestra la forma de hacerlo:

>>> import sys
>>> sys.path.append(‘/proyectos/modulos/‘)
>>> import mi_modulo

O añadiendo la ruta donde están los módulos al PYTHONPATH del sistema operativo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *