Python: Cómo usar import

Introducción
Una de las caracterísitcas (un poco confusas para mi) de python es la importación de paquetes/módulos. Antes de explicar cómo funciona, crea esta estructura

series/
  __init__.py
  fibonacci.py

Donde:

  • series: es un directorio (paquete)
  • __init__.py: es un script de python en blanco (necesario para identificar un directorio como paquete)
  • fibonacci.py: es un script de python (módulo) con funciones (o lo que quieras)

Antes de avanzar, se requiere algo para importar. Ingresa la siguiente función en fibonacci.py:

def fibo(n):
	a,b = 0,1
	
	while b < n:
		print b
		a,b = b, a+b

Hasta este momento se tiene un paquete llamado series que contiene un módulo llamado fibonacci. Es importante que a partir de ahora ingreses el código en el interprete interactivo de python. Además, asegurate de llamar a python en el mismo nivel en el que se encuentra el directorio series. Es decir, si series se encuentra en $HOME/series, debes invocar a python de esta forma:

cd $HOME/series
python

Usar import

Se puede usar import de esta forma para importar un paquete o módulo:

import package[.subpackage.[.module]]

Para importar el paquete series, ejecuta:

>>>>import series

Con esto se ha importado el paquete series, pero es poco útil, ya que aún no se tiene acceso al contenido del módulo fibonacci.

Para tener acceso al contenido de fibonacci, importa de esta manera:

>>> import series.fibonacci

De esta forma, es posible acceder a las funciones de fibonacci:

>>>>import series.fibonacci
>>> series.fibonacci.fibo(10)
1
1
2
3
5
8

A pesar de tener acceso a las funciones de fibonacci, puede parecer tedioso el escribir la ubicación completa hacia la función:

# paquete.modulo.funcion
series.fibonacci.fibo(10)

La siguiente forma de importación ofrece un método ligeramente más directo.

Usar from-import

Una alternativa para importar es:

from package import module

Una de las diferencias entre esta forma y la anterior es la manera de acceder a las funciones del módulo importado. Por ejemplo:

>>> from series import fibonacci
>>> fibonacci.fibo(10)
1
1
2
3
5
8

En este caso, no es necesario espeficar el nombre del paquete, sólo el del módulo:

# modulo.funcion
fibonacci.fibo(10)

Por último, se explica cómo importar de forma directa la función fibo().

Usar from-import de forma directa
También es posible importar sólo lo más indispensable, como una variable o función, de un módulo:

from package.module import function

De esta forma, es posible acceder a la función directamente, sin necesidad de especificar el nombre del paquete ni del módulo:

>>> from series.fibonacci import fibo
>>> fibo(10)
1
1
2
3
5
8

Más info
Python manual – Modules

6 comentarios en “Python: Cómo usar import

    1. Python permite importar un módulo .py desde cualquier directorio, siempre y cuando se encuentre en el path de búsqueda. Te recomiendo checar este post al respecto. La idea es que si tienes un módulo en dir_a/mod_a.py que hace uso de dir_b/mod_b.py, entonces necesitarás incluir dir_a y dir_b en tu sys.path para que el intérprete de python conozca dónde se encuentran mod_a.py y mod_b.py.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s