La portée des variables

Dans les fonctions et le programme principal

  • 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

Last updated