Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] Asignar metodos traidos de Imports

Estas en el tema de Asignar metodos traidos de Imports en el foro de Python en Foros del Web. Buenas, mi pregunta es mas de optimizacion. Empece a trabajar con objetos en php pero python me gusta mas, siendo una pena que no tenga ...
  #1 (permalink)  
Antiguo 26/06/2013, 00:29
Avatar de nicolasberro  
Fecha de Ingreso: junio-2013
Mensajes: 14
Antigüedad: 10 años, 10 meses
Puntos: 1
Asignar metodos traidos de Imports

Buenas, mi pregunta es mas de optimizacion. Empece a trabajar con objetos en php pero python me gusta mas, siendo una pena que no tenga tanto desarrollo como otros lenguajes, pero ese es tema de otro hilo.

Lo que vengo a preguntar es lo siguiente:

Si yo tuviera un modulo, llamemosle modulo.py, con el siguiente contenido:

Código Python:
Ver original
  1. def sumar(n1, n2):
  2.        n3 = n1 + n2
  3.        return n3

Si yo desde otro archivo necesito llamar a sumar, hago lo siguiente:

Código Python:
Ver original
  1. import modulo
  2.  
  3. modulo.sumar(1,2)

Hasta aca todo fenomeno. Pero segun lei en la documentacion, si uno asignara a sumar como variable de este mismo archivo, lo encontraria mas rapido, porque lo que primero busca son espacios de nombres locales. Entonces:

Código Python:
Ver original
  1. from modulo import sumar
  2. sumar(1,2)

Si yo no hiciera esto, segun entiendo, el programa tardaria mas en encontrar esta funcion ya que primero buscaria en otros lados.
Dejo lo que lei. Espero no haber malinterpretado:

"Aunque los alcances se determinan estáticamente, se usan dinámicamente. En cualquier momento durante la ejecución hay por lo menos cuatro alcances anidados cuyos espacios de nombres son directamente accesibles:

el ámbito interno, donde se busca primero, contiene los nombres locales
los espacios de nombres de las funciones anexas, en las cuales se busca empezando por el alcance adjunto más cercano, contiene los nombres no locales pero también los no globales
el ámbito anteúltimo contiene los nombres globales del módulo actual
el alcance exterior (donde se busca al final) es el espacio de nombres que contiene los nombres incluidos
Si un nombre se declara como global, entonces todas las referencias y asignaciones al mismo van directo al alcance intermedio que contiene los nombres globales del módulo. De otra manera, todas las variables que se encuentren fuera del alcance interno son de sólo lectura (un intento de escribir a esas variables simplemente crea una nueva variable en el alcance interno, dejando intacta la variable externa del mismo nombre)."


Fuente: [URL="http://docs.python.org.ar/tutorial/2/classes.html"]Clases - Python[/URL]

Gracias de antemano.
  #2 (permalink)  
Antiguo 26/06/2013, 09:01
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Asignar metodos traidos de Imports

Cuando haces:

Código Python:
Ver original
  1. from modulo import sumar

ó

Código Python:
Ver original
  1. import modulo

El tiempo que tarda en acceder a sumar o modulo es el mismo, respectivamente.

El segundo es efectivamente mas lento, pero no por el alcance de las variables cuando lo importas. Si no por ejecuta una búsqueda cuando haces modulo.suma

Te recomiendo importar solo lo necesario usando from X import Y siempre que sea posible.
  #3 (permalink)  
Antiguo 26/06/2013, 15:39
Avatar de nicolasberro  
Fecha de Ingreso: junio-2013
Mensajes: 14
Antigüedad: 10 años, 10 meses
Puntos: 1
Respuesta: Asignar metodos traidos de Imports

clarisimo. muchas gracias.

Etiquetas: import, optimización
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:05.