Haciendo todas las variables globales

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.

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

Organiza las variables en una clase . Cree una instancia de la clase en una función y luego pase la instancia a donde la necesite.

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

Podría crear un objeto de “espacio de nombres”, un objeto que funciona como un espacio de nombres con el fin de mantener limpio su espacio de nombres global:

 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 solo es ligeramente mejor que usar la palabra clave global. Realmente quieres una clase aquí como lo menciona Paul.

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() 

salida:

 100 200 

Este podría ser un buen lugar para implementar una clase. Esto tiene muchas ventajas. Ver Clases en los tutoriales .