Variables que no se guardan fuera de funcion (Python)

Iniciado por abreu20011, 3 Octubre 2012, 20:05 PM

0 Miembros y 1 Visitante están viendo este tema.

abreu20011

Saludos,

La verdad es que ya no sé si me esta tomando el pelo o qué pasa aquí. Estoy programando bajo la API de Autodesk Maya sobre Python algo muy, muy básico: cambiar el valor de una variable mediante una función.

Pero mi asombro y mi desesperación es que, si cambio el valor de la variable desde dentro de la función (en teoría, es una variable creada FUERA de la función, por lo que debería ser global) y sin salir de la función, le digo que me haga un print del valor... funciona.

Pero en cuanto llamo a la misma variable (se supone, ya modificada) desde otra función, no hace nada. Simplemente, deja el valor con el que fue creada la variable :(

Es como si creara una segunda variable en mi función o no guardara nada o no sé qué u.u

¿Alguna sugerencia?


import maya.cmds as mc

variable = '_MAL_'
collection1 = mc.radioCollection()

ventana = mc.window(t = 'a')
mc.columnLayout(adj = True)

mc.radioButton(l = 'A', cl = collection1, onc = 'F1()')
mc.radioButton(l = 'B', cl = collection1, onc = 'F2()')
mc.button(l = 'ver', c = 'Ver()')

mc.showWindow(ventana)

def F1():
   variable = 'A'
   print 'variable modificada a A'
   print 'valor leido desde F1(): ' + variable

def F2():
   variable = 'B'
   print 'variable modificada a B'
   print 'valor leido desde F2(): ' + variable
   
def Ver():
   print variable


Un saludo y gracias!

abreu20011

Por favor, que alguien me ayude, cualquiera idea me vendrá bien :)

@synthesize

1. Te recomiendo no usar globales, usa alguna clase con getters y setters. Luego si me animo te pego algún ejemplo.

2. Para modificar una global dentro de una función, utiliza
Código (python) [Seleccionar]
global tuvariable y luego la modificas dentro de la función. Python se crea una copia local de la variable en la función, por eso no te funciona.

abreu20011

Gracias Daemon :)

Estoy mirando algunas cosas que me has pasado porque me huelo que me voy a tener que crear una clase para esa información. Cosa que me parece un poco exagerada, pero bueno...

Gracias ^^