Bonjour
J'ai une petite interrogation sur la portée d'une variable. Tantôt je la vois, tantôt je ne la vois plus.
Petit exemple
Jusqu'ici tout fonctionne comme indiqué sur le tuto de ce forum. Ma variable toto est globale et non modifiable mais visible dans la fonction donc ma fonction la voit et peut l'afficher.
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 def fct(): print(toto) toto=10 fct() print(toto)
Rajoutons maintenant 1 ligne
Je redéfinis une variable locale dont la visibilité surclasse la globale. Dans la fonction elle vaut 5 mais la globale inchangée reste à 10. Ca va encore.
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 def fct(): toto=5 print(toto) toto=10 fct() print(toto)
Rajoutons maintenant une dernière ligne
Et là, rien ne va plus. Python me dit qu'il ne connait pas la variable "toto" et lève une exception au premier print. Pourtant à cet endroit il devrait voir la globale qui n'a pas encore été supplantée par la locale !!! (à ce moment là, il n'y a encore aucune différence avec le premier code)...
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 def fct(): print(toto) toto=5 print(toto) toto=10 fct() print(toto)
On dirait que puisque "toto" a été définie dans la fonction, elle n'a alors plus le droit d'être invoquée avant sa définition et ce, même si une globale existe à son nom. Et cela impliquerait alors que Python fait au-moins 2 évaluations d'un code lors de son exécution...
Merci à ceux qui pourront m'éclairer de leurs avis à ce sujet...
Partager