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