Protože python prohledává lokální proměnné a když tam nenajde, tak zkusí globální - které uvnitř funkce musí být deklarované jako global, ale vně funkce jsou globální automaticky všechny vytvořené:
$ python
Python 2.7.13 (default, Jan 12 2017, 17:59:37)
>>> def b():
... print a
...
>>> b()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in b
NameError: global name 'a' is not defined
>>> a = 5
>>> b()
5
>>>
Python dokáže ve funkcích přistupovat ke globálním proměnným, které se čtou. To global langs je tam v podstatě taky zbytečné. U zápisu to je něco jiného, protože x=10 by vytvořilo lokální proměnnou, zde je tedy global x nutností (ale nepoužíval bych to, to je dost čuňárna :-)