Bonjour à tous!

J'ai un petit soucis dans l'utlisation de la commande exec()...
Je vous la fais simple :
>>>def declare():
... exec('global g__var; g__var="varValue"')
... print(g__var)
...
>>>declare()
ca marche et affiche : varValue

et
>>>def declare():
... exec('global g__var')
... exec('g__var="varValue"')
... print(g__var)
...
>>>declare()
Traceback ... in declare print(g__var)
NameError: global name 'g__var' is not defined

Pourquoi tant de haine ?

Y a-t-il un contexte d'execution que je ne maitrise pas ?

Merci de vos réponse !