56 votes

Utilisation correcte des variables globales dans Python 3

Quelle est l'utilisation correcte des variables globales dans Python 3 ? :

1) En indiquant global VAR_NAME une fois dans le script principal (pas dans une fonction), puis en faisant simplement référence à la variable en tant que VAR_NAME partout ailleurs

2) Indiquer global VAR_NAME une fois dans chaque fonction qui utilise la variable globale, puis se référer simplement à la variable en tant que VAR_NAME pour le reste de la fonction et dans le script de base lui-même

72voto

Lennart Regebro Points 52510

Dans le premier cas, le mot clé global est inutile, ce n'est donc pas correct. Définir une variable au niveau du module en fait une variable globale, vous n'avez pas besoin du mot clé global.

Le deuxième exemple est l'utilisation correcte.

Cependant, l'utilisation la plus courante des variables globales est sans utiliser le mot-clé global nulle part. Le mot clé global n'est nécessaire que si vous souhaitez réaffecter les variables globales dans la fonction/méthode.

61voto

Dan Gerhardsson Points 1789

Vous devez utiliser le mot-clé global dans une fonction si vous utilisez la variable globale d'une manière qui serait autrement interprétée comme une affectation à une variable locale. Sans le mot clé global, vous créerez une variable locale qui masquera le global dans la portée de la fonction.

Voici quelques exemples:

 global_var = 1

def example1():
    # global keyword is not needed, local_var will be set to 1.
    local_var = global_var

def example2():
    # global keyword is needed, if you want to set global_var,
    # otherwise you will create a local variable.
    global_var = 2

def example3():
    # Without using the global keyword, this is an error.
    # It's an attempt to reference a local variable that has not been declared.
    global_var += 1

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X