[pyar] circular imports: they are everywhere.

Fabian Ezequiel Gallina galli.87 en gmail.com
Vie Sep 10 01:09:07 ART 2010


El día 10 de septiembre de 2010 01:00, Roberto Alsina
<ralsina en netmanagers.com.ar> escribió:
> On Friday 10 September 2010 00:43:52 Fabian Ezequiel Gallina wrote:
>> def funcion_loca():
>>     from otra.app import Algo
>>     return Algo()
>>
>> Lo primero que a uno se le viene a la cabeza es que eso no es pep8
>> compliant ni porque a Guido se lo amenace con hacerle escribir XML a
>> mano de por vida.
>>
>> Lo segundo que uno hace es mover ese import al principio del archivo:
>>
>> from otra.app import Algo
>>
>> def funcion_loca():
>>     return Algo()
>
> Más allá de tu problema de imports circulares: a veces es mejor hacer el
> import adentro de la función. Eso es perfectamente legal y aceptable.
>
> Por ejemplo, que pasa si importar ese módulo es "caro" y solo hace falta a
> veces? Lo importás al principio? Para qué?
>

El tema es que no es *tan* caro de importar y no me gusta tener un
paso extra para una función que se ejecuta ciento de veces luego de
ser importada y que necesita andar más rápido. La excusa para tener
ese import ahí adentro es que explota todo por los imports circulares
en sí. Eso no me gusta ni un poco :(.

Si python no importa el módulo de nuevo, buenísimo, supuse que era
así. Ahora la cuestión es que no quiero tener más llamadas de código
al divino botón.

Creo que para mi caso un import lazy sería como un gol de media cancha
a los 45 minutos del segundo tiempo (con pase a semifinales).


Saludos,
-- 
Fabián E. Gallina
http://www.from-the-cloud.com



More information about the pyar mailing list