¿Cómo maneja Python a los globales?
Me he encontrado con un manejo muy extraño de las variables globales en Python. ¡Esperaba que alguien pudiera explicar y justificar estas sorpresas!
A) Este código imprime 10 como se esperaba:
def func():
print(a)
a = 10
func()
B) Este código lanza una excepción acerca de hacer referencia a una fecha demasiado temprana:
def func():
print(a)
a += 1
a = 10
func()
C) Pero este código se imprime [10] como se esperaba:
def func():
print(a)
a.append(1)
a = [10]
func()
Así que puedo deducir que el tipo dea
cambia su alcance y, además, las declaraciones posteriores que aún no se han alcanzado aún cambian cómoa
es visto. Sé que puedo usarglobal a
al inicio de la función pero es bastante verboso.
¿Alguien puede decirme qué reglas está usando Python para manejar su extraño alcance?