Variables globales Python - Comment définir un exemple de variable globale
Dans cet article, vous apprendrez les bases des variables globales.
Pour commencer, vous apprendrez comment déclarer des variables en Python et ce que signifie réellement le terme « portée de variable ».
Ensuite, vous apprendrez les différences entre les variables locales et globales et comprendrez comment définir des variables globales et comment utiliser le mot-clé global
.
Voici ce que nous couvrirons :
-
Une introduction aux variables en Python
- Portée variable expliquée
Comment créer des variables avec une portée globale
- Le mot clé
global
Que sont les variables en Python et comment les créer ? Une introduction pour les débutants
Vous pouvez considérer les variables comme des conteneurs de stockage.
Ce sont des conteneurs de stockage contenant des données, des informations et des valeurs que vous souhaitez enregistrer dans la mémoire de l'ordinateur. Vous pouvez ensuite les référencer ou même les manipuler à un moment donné tout au long de la vie du programme.
Une variable a un nom symbolique, et vous pouvez considérer ce nom comme l'étiquette sur le conteneur de stockage qui fait office d'identifiant.
Le nom de la variable sera une référence et un pointeur vers les données qui y sont stockées. Il n’est donc pas nécessaire de mémoriser les détails de vos données et informations : il vous suffit de référencer le nom de la variable qui contient ces données et informations.
Lorsque vous donnez un nom à une variable, assurez-vous qu'il décrit les données qu'elle contient. Les noms de variables doivent être clairs et facilement compréhensibles à la fois pour vous-même et pour les autres développeurs avec lesquels vous travaillez.
Voyons maintenant comment créer réellement une variable en Python.
Lors de la déclaration de variables en Python, vous n'avez pas besoin de spécifier leur type de données.
Par exemple, dans le langage de programmation C, vous devez mentionner explicitement le type de données que contiendra la variable.
Donc, si vous souhaitez stocker votre âge qui est un entier, ou de type int
, voici ce que vous devrez faire en C :
#include <stdio.h>
int main(void)
{
int age = 28;
// 'int' is the data type
// 'age' is the name
// 'age' is capable of holding integer values
// positive/negative whole numbers or 0
// '=' is the assignment operator
// '28' is the value
}
Cependant, voici comment écrire ce qui précède en Python :
age = 28
#'age' is the variable name, or identifier
# '=' is the assignment operator
#'28' is the value assigned to the variable, so '28' is the value of 'age'
Le nom de la variable est toujours sur le côté gauche et la valeur que vous souhaitez attribuer se trouve sur le côté droit après l'opérateur d'affectation.
Gardez à l'esprit que vous pouvez modifier les valeurs des variables tout au long de la vie d'un programme :
my_age = 28
print(f"My age in 2022 is {my_age}.")
my_age = 29
print(f"My age in 2023 will be {my_age}.")
#output
#My age in 2022 is 28.
#My age in 2023 will be 29.
Vous conservez le même nom de variable, my_age
, mais modifiez uniquement la valeur de 28
à 29
.
Que signifie la portée variable en Python ?
La portée de la variable fait référence aux parties et aux limites d'un programme Python où une variable est disponible, accessible et visible.
Il existe quatre types de portée pour les variables Python, également connues sous le nom de règle LEGB :
- Local,
- Ferrant,
- Global,
- Intégré.
Pour le reste de cet article, vous vous concentrerez sur l'apprentissage de la création de variables à portée globale et vous comprendrez la différence entre les portées de variables locales et globales.
Comment créer des variables avec une portée locale en Python
Les variables définies dans le corps d'une fonction ont une portée locale, ce qui signifie qu'elles ne sont accessibles que dans cette fonction particulière. En d’autres termes, ils sont « locaux » par rapport à cette fonction.
Vous ne pouvez accéder à une variable locale qu'en appelant la fonction.
def learn_to_code():
#create local variable
coding_website = "freeCodeCamp"
print(f"The best place to learn to code is with {coding_website}!")
#call function
learn_to_code()
#output
#The best place to learn to code is with freeCodeCamp!
Regardez ce qui se passe lorsque j'essaie d'accéder à cette variable avec une portée locale depuis l'extérieur du corps de la fonction :
def learn_to_code():
#create local variable
coding_website = "freeCodeCamp"
print(f"The best place to learn to code is with {coding_website}!")
#try to print local variable 'coding_website' from outside the function
print(coding_website)
#output
#NameError: name 'coding_website' is not defined
Il génère une NameError
car elle n'est pas "visible" dans le reste du programme. Il n'est « visible » qu'au sein de la fonction où il a été défini.
Comment créer des variables avec une portée globale en Python
Lorsque vous définissez une variable en dehors d'une fonction, comme en haut du fichier, elle a une portée globale et est appelée variable globale.
Une variable globale est accessible depuis n'importe où dans le programme.
Vous pouvez l'utiliser à l'intérieur du corps d'une fonction, ainsi qu'y accéder depuis l'extérieur d'une fonction :
#create a global variable
coding_website = "freeCodeCamp"
def learn_to_code():
#access the variable 'coding_website' inside the function
print(f"The best place to learn to code is with {coding_website}!")
#call the function
learn_to_code()
#access the variable 'coding_website' from outside the function
print(coding_website)
#output
#The best place to learn to code is with freeCodeCamp!
#freeCodeCamp
Que se passe-t-il lorsqu'il existe une variable globale et une variable locale et qu'elles portent toutes deux le même nom ?
#global variable
city = "Athens"
def travel_plans():
#local variable with the same name as the global variable
city = "London"
print(f"I want to visit {city} next year!")
#call function - this will output the value of local variable
travel_plans()
#reference global variable - this will output the value of global variable
print(f"I want to visit {city} next year!")
#output
#I want to visit London next year!
#I want to visit Athens next year!
Dans l’exemple ci-dessus, vous ne vous attendiez peut-être pas à ce résultat spécifique.
Peut-être pensiez-vous que la valeur de city
changerait lorsque je lui attribuerais une valeur différente dans la fonction.
Peut-être vous attendiez-vous à ce que lorsque je référencerais la variable globale avec la ligne print(f" Je veux visiter {city} l'année prochaine!")
, le résultat serait #Je veux visiter Londres l'année prochaine !
au lieu de #Je veux visiter Athènes l'année prochaine !
.
Cependant, lorsque la fonction était appelée, elle imprimait la valeur de la variable locale.
Ensuite, lorsque j'ai référencé la variable globale en dehors de la fonction, la valeur attribuée à la variable globale a été imprimée.
Ils ne se sont pas interférés.
Cela dit, l’utilisation du même nom de variable pour les variables globales et locales n’est pas considérée comme une bonne pratique. Assurez-vous que vos variables ne portent pas le même nom, car vous pourriez obtenir des résultats confus lorsque vous exécutez votre programme.
Comment utiliser le mot clé global
en Python
Que se passe-t-il si vous avez une variable globale mais que vous souhaitez modifier sa valeur dans une fonction ?
Regardez ce qui se passe lorsque j'essaie de faire ça :
#global variable
city = "Athens"
def travel_plans():
#First, this is like when I tried to access the global variable defined outside the function.
# This works fine on its own, as you saw earlier on.
print(f"I want to visit {city} next year!")
#However, when I then try to re-assign a different value to the global variable 'city' from inside the function,
#after trying to print it,
#it will throw an error
city = "London"
print(f"I want to visit {city} next year!")
#call function
travel_plans()
#output
#UnboundLocalError: local variable 'city' referenced before assignment
Par défaut, Python pense que vous souhaitez utiliser une variable locale dans une fonction.
Ainsi, lorsque j'essaie pour la première fois d'imprimer la valeur de la variable et puis de réattribuer une valeur à la variable à laquelle j'essaie d'accéder, Python est confus.
La façon de modifier la valeur d'une variable globale dans une fonction consiste à utiliser le mot-clé global
:
#global variable
city = "Athens"
#print value of global variable
print(f"I want to visit {city} next year!")
def travel_plans():
global city
#print initial value of global variable
print(f"I want to visit {city} next year!")
#assign a different value to global variable from within function
city = "London"
#print new value
print(f"I want to visit {city} next year!")
#call function
travel_plans()
#print value of global variable
print(f"I want to visit {city} next year!")
Utilisez le mot-clé global
avant de le référencer dans la fonction, car vous obtiendrez l'erreur suivante : SyntaxError : le nom 'city' est utilisé avant la déclaration globale
.
Plus tôt, vous avez vu que vous ne pouviez pas accéder aux variables créées dans les fonctions car elles ont une portée locale.
Le mot-clé global
modifie la visibilité des variables déclarées dans les fonctions.
def learn_to_code():
global coding_website
coding_website = "freeCodeCamp"
print(f"The best place to learn to code is with {coding_website}!")
#call function
learn_to_code()
#access variable from within the function
print(coding_website)
#output
#The best place to learn to code is with freeCodeCamp!
#freeCodeCamp
Conclusion
Et voila! Vous connaissez maintenant les bases des variables globales en Python et pouvez faire les différences entre les variables locales et globales.
J'espère que vous avez trouvé cet article utile.
Pour en savoir plus sur le langage de programmation Python, consultez la certification Scientific Computing with Python de freeCodeCamp.
Vous partirez des bases et apprendrez de manière interactive et conviviale pour les débutants. À la fin, vous construirez également cinq projets pour mettre en pratique et contribuer à renforcer ce que vous avez appris.
Merci d'avoir lu et bon codage !