6.3 Portée des variables
Objectifs d'apprentissage
À la fin de cette section, vous devriez être en mesure de :
- Identifier la portée des variables d'un programme.
- Discuter de l'impact de la portée d'une variable.
Portée globale
La portée (scope) d'une variable est la partie d'un programme dans laquelle cette variable est accessible. Une variable créée en dehors d'une fonction a une portée globale (global scope) et est accessible partout dans le programme. Un programme Python commence dans la portée globale, et cette portée globale persiste pendant toute l'exécution du programme.
Concepts en pratique
Variables globales
Portée locale
Une variable créée à l'intérieur d'une fonction a une portée locale (local scope) et n'existe qu'au sein de cette fonction. Une variable locale n'est pas accessible en dehors de la fonction dans laquelle elle a été créée. Une fois l'exécution d'une fonction terminée, ses variables locales cessent d'exister.
Concepts en pratique
Variables locales
Utiliser conjointement des variables locales et globales
Python permet aux variables globales et locales de porter le même nom, ce qui peut entraîner des comportements inattendus du programme. Une fonction traite toute variable modifiée en son sein comme une variable locale, sauf indication contraire. Pour modifier une variable globale à l'intérieur d'une fonction, la variable doit être déclarée avec le mot-clé global.
Concepts en pratique
Utilisation conjointe de variables locales et globales
Considérez les variantes suivantes du programme d'exemple avec la valeur d'entrée 9.
Avantages de la limitation de la portée
Un programmeur pourrait se demander : « Pourquoi ne pas simplement faire de toutes les variables des variables globales pour éviter les erreurs d'accès ? » Rendre chaque variable globale peut rendre un programme désordonné. Par exemple, un programmeur qui débogue un grand programme découvre qu'une variable possède une valeur incorrecte. Si l'ensemble du programme peut modifier la variable, le bogue peut alors se trouver n'importe où dans ce grand programme. Limiter la portée d'une variable au strict nécessaire et restreindre l'utilisation des variables globales rend un programme plus facile à déboguer, à maintenir et à mettre à jour.
À vous d'essayer
Lancement d'un jeu battle royale
Écrivez un programme qui lit un mode de jeu sélectionné et appelle l'une des deux fonctions pour lancer le jeu. Si l'entrée est "br", appelez battle_royale(). Sinon, appelez practice().
battle_royale() :
- Lit le nombre de joueurs.
- Calcule le nombre de coéquipiers encore nécessaires. Une équipe complète compte 3 joueurs.
- Appelle la fonction
find_teammates()avec le nombre calculé. - Affiche
"Match starting . . .".
practice() :
- Lit une chaîne de caractères représentant la carte souhaitée.
- Affiche
"Launching practice on [desired map]".
Remarque : find_teammates() est fournie et n'a pas besoin d'être modifiée.
Pour l'entrée donnée :
br
1
La sortie est :
Finding 2 players...
Match starting...
Pour l'entrée donnée :
p
Queen's Canyon
La sortie est :
Launching practice on Queen's Canyon