Une variable créée dans le programme principal est visible dans les fonctions.
Une variable créée dans une fonction n'est pas visible.
Exemple
Dans l'exemple suivant, il y a deux boîtes dans un espace de jeux. Les deux fonctions montrent les respectivement les contenus des deux boîtes. Le programme principal représente l'espace de jeux.
def afficher_contenu_boite_1():
"""
Permet d'afficher le contenu de la boîte 1.
:return: Aucun
"""
jeu_boite_1 = "pistolet à eau"
print("╔═══════════════════════════════════════════╗")
print(f"║Dans la boîte 1, il y a un {jeu_boite_1} ║")
print(f"║Depuis la boîte 1, on peut voir la {jeu_espace_global} ║")
print("╚═══════════════════════════════════════════╝")
def afficher_contenu_boite_2():
"""
Permet d'afficher le contenu de la boîte 2.
:return:
"""
jeu_boite_2 = "qaquettes de tennis"
print("╔═══════════════════════════════════════════╗")
print(f"║Dans la boîte 2, il y a des {jeu_boite_2} ║")
print("╚═══════════════════════════════════════════╝")
# Tentative d'accès à l'objet dans la boîte 1
print("Depuis la boîte 2, on peut voir un(e)", jeu_boite_1)
print("Erreur : On ne peut pas voir l'objet de la boîte 1 depuis la boîte 2!")
if __name__ == "__main__":
# Imanigez que la partie de programme principal est un espace global de jeux (ex: un bac à sable).
jeu_espace_global = "Jeux de sable"
print("Explorons les boîtes...")
afficher_contenu_boite_1()
afficher_contenu_boite_2()
# Essayons de voir les objets dans l'espace de jeux, à l'extérieur des boîtes.
print(f"Dans l'espace de jeux global, il y a un {jeu_espace_global} et deux boîtes")
# Tentative d'accès aux objets des boîtes 1 et 2
print("En dehors des boîtes, on peut voir un ", jeu_boite_1)
print("En dehors des boîtes, on peut voir des ", jeu_boite_2)
Dans les blocs if/elif/else
if __name__ == "__main__":
# Une variable globale accessible partout dans la maison
maison = "Vous êtes dans la maison principale."
# choix = input("Faites un choix (cuisine ou salon) :")
choix = 'cuisine'
if choix == "cuisine":
# Variable locale dans le bloc if (cuisine)
objet_cuisine = "réfrigérateur"
print("Vous êtes dans la cuisine et vous trouvez un :", objet_cuisine)
# On peut voir l'objet de la cuisine et la maison
print("Depuis la cuisine, on peut voir :", maison)
else:
# Variable locale dans le bloc else (salon)
objet_salon = "Télécommande"
print("Vous êtes dans le salon et vous trouvez une :", objet_salon)
# On peut voir l'objet du salon et la maison
print("Depuis le salon, on peut voir :", maison)
# Tentatives d'accès aux objets après les blocs if/else
print("Après exploration, on peut voir l'objet de la cuisine :", objet_cuisine)
print("Après exploration, on peut voir l'objet du salon :", objet_salon)
print("Exploration de la maison...")
print(maison) # On peut toujours voir la maison