Lo que entiendo al leer la documentación es que Python tiene un espacio de nombres separado para las funciones, y si quiero usar una variable global en esa función, necesito usarla global
.
Estoy usando Python 2.7 y probé esta pequeña prueba
>>> sub = ['0', '0', '0', '0']
>>> def getJoin():
... return '.'.join(sub)
...
>>> getJoin()
'0.0.0.0'
Parece que las cosas funcionan bien incluso sin ellas global
. Pude acceder a la variable global sin ningún problema.
¿Me estoy perdiendo algo? Además, lo siguiente es de la documentación de Python:
Los nombres enumerados en una declaración global no deben definirse como parámetros formales o en un objetivo de control de bucle, definición de clase, definición de función o declaración de importación.
Si bien los parámetros formales y la definición de clase tienen sentido para mí, no puedo entender la restricción para el objetivo de control de bucle y la definición de función.
def foo(): ...
y foo = ...
al mismo tiempo). Crea un nuevo alcance para cada llamada a la función. (Pero, ¿cómo se diferencia de casi cualquier otro idioma de forma remota de alto nivel en el mundo?)