2012-05-27 24 views
6

Tengo una función en mi script de Python donde se crean múltiples variables, y quiero usarlas en otras funciones. Pensé en usar global para esto, pero pensé que sería la forma incorrecta de hacerlo.Haciendo todas las variables globales

Entonces, ¿alguien puede decirme cuál sería la mejor manera de crear variables en una función para otras funciones?

Respuesta

8

Organice las variables en class. Crea una instancia de la clase en una función y luego pasa la instancia a donde la necesites.

Regla de oro: si hacer algo global parece una buena solución en algún momento, no lo hagas. Siempre hay una mejor manera.

2

Se puede crear un objeto "nombre" - un objeto que funciona como un espacio de nombres con el fin de mantener su espacio de nombres global clara:

class namespace(): 
    pass 

global_data=namespace() 

def add_attributes(obj): 
    obj.foo="bar" 

add_attributes(global_data) 
print (global_data.foo) #prints "bar" 

Sin embargo, esto es sólo marginalmente mejor que usar la palabra clave mundial . Realmente quieres una clase aquí como lo menciona Paul.

2

Declara las variables como atributos de la función.

def f1(): 
    f1.a=100 
    f2.b=200 

def f2(): 
    print(f1.a,f2.b) 

f1() 
f2() 

de salida:

100 200 
+0

¿Hay alguna ventaja de hacer esto en vez de en una clase? – beardc

+0

@BirdJaguarIV Se puede usar si uno no es bueno/no está familiarizado con el enfoque orientado a objetos. –