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   -
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()


>>> 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

Utilisateur anonyme
 
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
0
pierrot18200 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
"""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.
0