Sobre Módulos

Chema Cortes py en ch3m4.org
Lun Nov 26 02:14:02 CET 2007


El Sunday 25 November 2007 11:44:52 Javier Garcia escribió:

> Es decir desde __main__ hacemos
>
> >> import modulo
>
> ¿ con solo esta linea es posible que modulo sepa quien es el archivo
> que lo ha importado ?
>
>Quiero investigar que ocurre cuando se le pasa el control de ejecución 
> a un módulo, quizá sea una chorrada pero tengo curiosidad.
>
>[...]
>
>  ¿Esto vale para algo o es inutil??

Totalmente inútil. Es erróneo el concepto que tienes de "paso del control" de 
ejecución al módulo. La importación de módulos es una carga de "definiciones" 
que, en ningún momento, debería llevar asociada la ejecución de código. 
Justamente el comprobar el __name__=="__main__" es hace para evitar la 
ejecución de código cuando se importa el fichero.

Más en concreto, nunca tendrás la certeza de saber quién ha importado el 
módulo, ya que existe una caché de módulos que evita tener que reimportar los 
módulos que ya están importado (prueba a importar dos veces un módulo y verás 
que sólo se "ejecuta" la primera vez).

Deberías considerar la importación como si el programa hiciera suyas las 
definiciones de clases y funciones que se encuentra en el módulo, 
desligándolas de cualquier atadura con el fichero donde estaban definidas 
(una vez más, prueba a cambiar el módulo, una vez ya importado, y verás que 
el programa principal conserva las definiciones iniciales haciendo caso omiso 
de los cambios, por más que reimportes el módulo (notar que se puede forzar 
la reimportación con un reload() )).

Otra cosa distinta es que quieras navegar a través del stack de ejecución; 
pero aquí, como mucho, te dará para saber la cadena de llamadas entre 
funciones y métodos.
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





Más información sobre la lista de distribución Python-es