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'"""
 
Vus : 1217
Publié par Tuxicoman : 338