duda sobre import

Christian Pinedo Zamalloa chr.pinedo en gmail.com
Mar Jul 7 13:19:55 CEST 2009


El 7 de julio de 2009 12:46, Hermann Kaser<hermann.kaser en gmail.com> escribió:
> 2009/7/7 Christian Pinedo Zamalloa <chr.pinedo en gmail.com>:
>> hola,
>>
>> tengo una pregunta básica sobre el funcionamiento de los import en Python.
>>
>> Cuando se importa un modulo (import module) se ejecuta todo el código
>> global de ese módulo o realmente no se ejecuta nada. Se ejecutaría el
>> código en el momento del import o cuando se llaman a elementos de ese
>> modulo (module.function).
>>
>> ¿Y como funciona cuando se importa una función o clase en concreto
>> (from module import function)? Tambien se ejecuta el código global de
>> ese módulo nada mas realizarse el import o no se ejecuta nada salvo la
>> función cuando es llamada a lo largo del código.
>
> Si haces un import de un modulo "import modulo" se ejecuta todo el
> codigo que haya dentro del modulo, ten en cuenta que las funciones no
> se ejecutan simplemente se parsean. Cuando haces un "from modulo
> import funcion" solo se parsea esa funcion.
>
> Por ejemplo, con este modulo.py:
>
> ------------------------------
> variable = 3
>
> def funcion(a):
>    return a
> ------------------------------
>
>
> $ python
>>>> import modulo
>>>> modulo.variable
> 3
>
> $ python
>>>> from modulo import funcion
>>>> funcion(3)
> 3

Gracias por la respuesta....

Pues creo que en el segundo caso tambien se procesa el código global
del modulo porque he hecho alguna prueba. Suponiendo el siguiente
módulo:

a = 3

def funcion(i)
    return a + i


Pruebas:

> import modulo
> print modulo.funcion(3)
6

> from modulo import funcion
> print funcion(3)
6

Parece que siempre que se hace un import se ejecuta su código global
independientemente de la forma de hacer el import del modulo. Saludos,


-- 
Christian Pinedo Zamalloa (zako)
PGP keyID: 0x828D0C80
Fingerprint: 7BFF 4105 F46B 7977 BD96  348C 1007 4FF8 828D 0C80
_______________________________________________
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