Presentacion (Era Definir Listas Globales)

Chema Cortes py en ch3m4.org
Mie Mar 10 14:26:40 CET 2004


Andres Moya escribió:

 >...


Buff. Pienso que lo estáis viendo por el lado complicado.

Para empezar, desde el python 2.1 existen los "nested_scopes" (que es 
más o menos lo que comentaba Erny). Cuando tenemos una función definida 
dentro de otra hay una reglas de localización de un nombre en los 
espacios de nombres. Por ejemplo, lo siguiente funciona bien:

def f():
     x,y=100,200
     def g():
         print x
     def h():
         print y
     g()
     h()

Cuando se buscan las variables 'x' e 'y' en las funciones g() y h(), 
como no las encuentran en sus variables locales buscan en la locales de 
la función f().

Esto se puede emplear para dar algunos parámetros comunes a todas las 
funciones, pero no sirve de nada si se quiere modificar alguno de estos 
parámetros.

Antes de empezar con clases y métodos estáticos, o cosas más raras, una 
opción mejor es emplear "atributos de función". Una función es, en sí 
mismo, un objeto y como tal se le puede añadir cualquier atributo. Por 
ejemplo:

def f():
     f.x=100
     def g():
         print f.x
         g.x,f.x=f.x,200
     def h():
         print f.x
         print g.x
     g()
     h()

Incluso se pueden "desanidar" las funciones y quedaría algo más "legible".
------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es


Más información sobre la lista de distribución Python-es