Uso de la palabra clave "global" en Python

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 usarglobal.

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 singlobal. 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.

Respuestas a la pregunta(10)

Su respuesta a la pregunta