Portée des variables
pierrot18200
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
pierrot18200 Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
pierrot18200 Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
On lit dans les manuels que les variables définies au niveau principal du programme ne peuvent pas être modifiées par les fonctions.
Or dans le code simplissime suivant, la variable var définie au niveau principal est modifiée par la fonction function()
La variable est particulière certes, et l'instruction qui la modifie n'est pas une instruction d'affectation certes. Mais cela contredit ce qu'on lit dans les manuels non ?
Pierre
On lit dans les manuels que les variables définies au niveau principal du programme ne peuvent pas être modifiées par les fonctions.
Or dans le code simplissime suivant, la variable var définie au niveau principal est modifiée par la fonction function()
>>> var = [1]
>>> def function():
var[0] = 2
>>> var
[1]
>>> function()
>>> var
[2]
>>>
La variable est particulière certes, et l'instruction qui la modifie n'est pas une instruction d'affectation certes. Mais cela contredit ce qu'on lit dans les manuels non ?
Pierre
2 réponses
Bonjour
Je ne suis pas spécialiste en Python, mais il me semble bien que ta variable n'est pas locale : elle est définie à la racine. et comme le type liste est modifiable, la fonction modifie effectivement la liste.
https://python.sdv.univ-paris-diderot.fr/#SECTION000135000000000000000
Je ne suis pas spécialiste en Python, mais il me semble bien que ta variable n'est pas locale : elle est définie à la racine. et comme le type liste est modifiable, la fonction modifie effectivement la liste.
https://python.sdv.univ-paris-diderot.fr/#SECTION000135000000000000000
"""Je ne suis pas spécialiste en Python, mais il me semble bien que ta variable n'est pas locale : elle est définie à la racine. """
C'est bien ce que j'ai dit. La racine ou le niveau principal c'est la même chose. Je te remercie pour ce lien, il me sera sûrement utile.
J'ai trouvé la réponse à mon questionnement métaphysique ici :
http://fr.openclassrooms.com/informatique/cours/apprenez-a-programmer-en-python/la-portee-des-variables-2
Il est effectivement faux, ou incomplet, de dire que les variables définies au niveau principal du programme ne peuvent pas être modifiées par les fonctions. Il faut dire :
une fonction ne peut modifier, par affectation, la valeur d'une variable extérieure à son espace local.
C'est bien ce que j'ai dit. La racine ou le niveau principal c'est la même chose. Je te remercie pour ce lien, il me sera sûrement utile.
J'ai trouvé la réponse à mon questionnement métaphysique ici :
http://fr.openclassrooms.com/informatique/cours/apprenez-a-programmer-en-python/la-portee-des-variables-2
Il est effectivement faux, ou incomplet, de dire que les variables définies au niveau principal du programme ne peuvent pas être modifiées par les fonctions. Il faut dire :
une fonction ne peut modifier, par affectation, la valeur d'une variable extérieure à son espace local.