Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/06/2013, 00:29
Avatar de nicolasberro
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.