[Python-es] scope de variables

Oswaldo Hernández listas en soft-com.es
Vie Jun 18 15:43:56 CEST 2010


Dr. Bobus escribió:
> El Fri, 18 Jun 2010 12:27:11 +0000 (GMT)
> Luis Garcia Merino <lgmerino en yahoo.com> dijo:
> 
> 
>> Buenas,
>> una pregunta que igual es un poco tonta, pero no acabo de comprender bien porque utilizas eval... ¿por qué no le pasas a la función imagen directamente los arrays en vez de los nombres? O mejor, los nombres y los arrays... Quizás algo como:
>>
>> datos = { 'cmasa': cmasa, 'cmovi':cmovi, 'cfago':cfago...}    
>> imagen(ciclo,datos,'Células')
> 
> 
> Hola:
> 
> La verdad es que quizá me complico la vida, pero el hecho es que las matrices son muchas más y de antemano no se cuales se van a pasar a la función (sólo se que 6 ni una más ni una menos). Es por ello que en realidad llamo a la función pasándole una lista de nombres que previamente se ha generado en otro lado. Generar un diccionario en lugar de una lista no me pareció mejor. Además (y esto lo digo desde la ignorancia) pensé que me daría problemas con la memoria. De hecho en otras partes del programa estoy teniendo errores de memoria que aún no he conseguido identificar bien.
> 
> Pero la pregunta sigue en el aire... ;) ¿debería funcionar el código que he puesto?
> 

La funcion imagen() no ve las variables que has definido fuera de ella.

Si quieres utilizar strings para nombrar los elementos creo que deberias 
utilizar un diccionario, algo como:

dvars = {}
dvars['cmasa'] = ...
dvars['cmovi'] = ...

le agregas el diccionario en los parametros de la funcion imagen y alli

for i, label in enumerate(graficos):
	array = dvars[label]


Saludos,

--
Oswaldo Hernández


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