23.11.2012 Views

Python para todos

Python para todos

Python para todos

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Python</strong> <strong>para</strong> <strong>todos</strong><br />

Aunque se considera una mala práctica, también es posible importar<br />

<strong>todos</strong> los nombres del módulo al espacio de nombres actual usando el<br />

caracter *:<br />

from time import *<br />

Ahora bien, recordareis que a la hora de crear nuestro primer módulo<br />

insistí en que lo guardarais en el mismo directorio en el que se encontraba<br />

el programa que lo importaba. Entonces, ¿cómo podemos<br />

importar los módulos os, sys o time si no se encuentran los archivos<br />

os.py, sys.py y time.py en el mismo directorio?<br />

A la hora de importar un módulo <strong>Python</strong> recorre <strong>todos</strong> los directorios<br />

indicados en la variable de entorno PYTHONPATH en busca de un archivo<br />

con el nombre adecuado. El valor de la variable PYTHONPATH se puede<br />

consultar desde <strong>Python</strong> mediante sys.path<br />

>>> import sys<br />

>>> sys.path<br />

De esta forma <strong>para</strong> que nuestro módulo estuviera disponible <strong>para</strong><br />

<strong>todos</strong> los programas del sistema bastaría con que lo copiáramos a uno<br />

de los directorios indicados en PYTHONPATH.<br />

En el caso de que <strong>Python</strong> no encontrara ningún módulo con el nombre<br />

especificado, se lanzaría una excepción de tipo ImportError.<br />

Por último es interesante comentar que en <strong>Python</strong> los módulos<br />

también son objetos; de tipo module en concreto. Por supuesto esto<br />

significa que pueden tener atributos y mé<strong>todos</strong>. Uno de sus atributos,<br />

__name__, se utiliza a menudo <strong>para</strong> incluir código ejecutable en un<br />

módulo pero que este sólo se ejecute si se llama al módulo como programa,<br />

y no al importarlo. Para lograr esto basta saber que cuando se<br />

ejecuta el módulo directamente __name__ tiene como valor “__main__”,<br />

mientras que cuando se importa, el valor de __name__ es el nombre del<br />

módulo:<br />

print “Se muestra siempre”<br />

if __name__ == “__main__”:<br />

print “Se muestra si no es importacion”<br />

74

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!