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