Variable globale dans Python
Petit mémento à usage des débutants en Python pour mieux comprendre l'usage des variables globales.
#! /usr/bin/python # -*- coding: utf-8 -*- a = [1 , 2 , 3] """la variable est définie dans l'espace de nom du module/script. C'est une variale globale.""" def lecture_et_modification() : print "a:", a """retourne: 'a: [1, 2, 3, 4]' Nous sommes dans une fonction et nous voulons afficher la variable "a". Puisque la variable n'est pas été définie préalablement dans l'espace de nom de la fonction, c'est la variable globale qui est affichée.""" a.append(4) a[0] = "hoho" """On peut modifier une variable globale directement. Comme la variable "a" n'est pas définie dans l'espace de nom de la fonction, c'est la variable globale est est modifiée""" lecture_et_modification() print "a:", a """retourne: 'a: ['hoho', 2, 3, 4]'""" def creation() : global a """Cette ligne indique que la référence au nom de variable "a" doit se faire dans l'espace de nom global du script/module et non de la fonction""" a = 5 """Ici, on ne modifie plus mais on crée ou re-crée la variable Que la variable "a" existe préalablement ou pas ne change rien. Si on n'écrit pas la ligne au dessus ("global a"), la variable "a" sera une variable locale de la fonction, ce qui n'est pas le comportement désiré ici.""" a += 5 """Cette syntaxe pourrait à priori faire penser à une modification mais il s'agit en fait du raccourci pour 'a = a + 5'. Il s'agit donc là là aussi d'une création de variable. Il faut donc préalablement déclarer "global a" si on veut que la variable soit créée dans l'espace global de noms""" creation() print "a:", a "retourne 'a: 10'"""