Variable global modificada por varias funciones: cómo declarar en Python

Estoy usando alguna variable en múltiples funciones.
Esto incluye cambiar los valores de las variables por cada una de esas funciones.
Ya declaré la variable como ‘global’ en la primera función.
¿Debo declarar esta variable una y otra vez como global en cada función (y esto no sobrescribirá la primera variable global que declaré en la primera función) o no debería declararla nuevamente como global en todas esas funciones (pero las variables locales allí todavía) será visto como global ya que declaré esta variable por primera vez)?

La palabra clave global le dice al analizador por función que un nombre no debe ser tratado como un local cuando se le asigna.

Normalmente, el analizador ve como local un nombre que se enlaza en una función (asignar a, usar como un argumento de función, usar en una statement de importación en el cuerpo de la función, etc.).

Al usar la palabra clave global , el analizador generará un código de bytes que buscará un nombre global. Si tiene varias funciones que se asignan al global, deberá declarar ese nombre global en todas esas funciones. Luego buscarán el nombre en el espacio de nombres global.

Vea la documentación de la statement global :

La statement global es una statement que se mantiene para todo el bloque de código actual. Esto significa que los identificadores enumerados deben interpretarse como globales.

y la documentación de Naming and Binding :

Si un nombre está vinculado en un bloque, es una variable local de ese bloque. Si un nombre está vinculado al nivel del módulo, es una variable global. (Las variables del bloque de código del módulo son locales y globales.) Si una variable se usa en un bloque de código pero no está definida allí, es una variable libre.

Puede declarar una variable como global en cada definición de función. Aquí hay un ejemplo:

 def f(): global x x = 2 print x x +=2 # This will assign a new value to the global variable x def g(): global x print x x += 3 # This will assign a new value to the global variable x f() # Prints 2 g() # Prints 4 print x # Prints 7 

¿Debo declarar esta variable una y otra vez como global en cada función?

No debe tener ninguna variable global, y coloque estas variables y funciones en una clase.