sábado, 7 de junio de 2008

Importación de módulos en python

En python hay varias formas de importar módulos, la primera de ellas es la siguiente.

#!/usr/bin/python

import math

print math.sqrt(80)

Se importa la librería math pero después para hacer uso de la función sqrt es necesario especificar que viene de esta librería en concreto.

Se hace así para diferenciar que funciones vienen de cada librería y que no haya confusión de a que función estamos llamando.
Si por ejemplo disponemos de una librería matemática más rapida pero menos completa, para sustituir esta llamada se podría hacer math2.sqrt(80) sin ningún problema.

La segunda manera de importar módulos es como sigue.

#!/usr/bin/python

from math import sqrt

print sqrt(80)

En esta ocasión nos ahorramos especificar en la llamada de donde viene la función sqrt pero debe especificarse en la importación.
Esta forma de importar funciones de los módulos hace que quede muy claro que funciones se usan y de donde provienen, además simplifica la sintaxis en la llamada pero tiene un problema; si tenemos en cuenta el ejemplo de antes, debemos saber de antemano que llamadas vamos a usar de math y de math2 y no podríamos usar sqrt de las dos en el mismo programa.

La tercera forma es la siguiente.

#!/usr/bin/python

from math import *

print sqrt(80)

Es igual a la primera pero sin necesidad de indicar el espacio de nombres en cada llamada, tiene el mismo problema de la segunda y en general es considerado un mal hábito de programación. Se están importando multitud de nombres que pueden colisionar con los del programa y no provee ninguna utilidad especial.

En conclusión, para scripts pequeños de unas cuantas líneas me quedaría con la segunda o la tercera por sencillez, pero si se pretende hacer algo más grande y serio la primera opción es la adecuada.

1 comentarios:

Anónimo dijo...

Good post and this fill someone in on helped me alot in my college assignement. Say thank you you as your information.