2012-05-27 3 views
6

Ho una funzione nel mio script Python in cui sono create più variabili, e voglio usarle in altre funzioni. Ho pensato di usare global per questo, ma ho pensato che sarebbe stato il modo sbagliato di farlo.Rendere globali tutte le variabili

Così qualcuno può dirmi quale sarebbe il modo migliore per creare variabili in una funzione per altre funzioni?

risposta

8

Organizzare le variabili in class. Crea un'istanza della classe in una funzione e poi passa l'istanza ovunque ti serva.

Regola di pollice: se fare qualcosa di globale sembra una buona soluzione ad un certo punto, non farlo. C'è sempre un modo migliore.

2

Si potrebbe creare un oggetto "namespace" - un oggetto che funziona come uno spazio dei nomi allo scopo di mantenere il namespace globale chiara:

class namespace(): 
    pass 

global_data=namespace() 

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

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

Tuttavia, questo è solo marginalmente meglio che usare la parola chiave globale . Vuoi davvero una lezione qui come menzionato da Paul.

2

Dichiarare le variabili come attributi della funzione.

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

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

f1() 
f2() 

uscita:

100 200 
+0

C'è un vantaggio di fare questo invece che in una classe? – beardc

+0

@BirdJaguarIV Può essere utilizzato se uno non è buono/familiare con l'approccio orientato agli oggetti. –