Ce que je comprends de la lecture de la documentation, c'est que Python a un espace de noms séparé pour les fonctions, et si je veux utiliser une variable globale dans cette fonction, je dois l'utiliser global
.
J'utilise Python 2.7 et j'ai essayé ce petit test
>>> sub = ['0', '0', '0', '0']
>>> def getJoin():
... return '.'.join(sub)
...
>>> getJoin()
'0.0.0.0'
Il semble que les choses fonctionnent bien même sans global
. J'ai pu accéder à la variable globale sans aucun problème.
Suis-je en train de manquer quelque chose? En outre, ce qui suit provient de la documentation Python:
Les noms répertoriés dans une instruction globale ne doivent pas être définis en tant que paramètres formels ou dans une cible de contrôle de boucle for, une définition de classe, une définition de fonction ou une instruction d'importation.
Bien que les paramètres formels et la définition de classe aient un sens pour moi, je ne suis pas en mesure de comprendre la restriction de la définition de la fonction et de la cible du contrôle de boucle.
def foo(): ...
et foo = ...
en même temps). Il crée une nouvelle portée pour chaque appel de fonction. (Mais en quoi est-ce différent de tous les autres langages de haut niveau à distance dans le monde?)