Aller au contenu

Exercices

I. QCM mutabilité et variables globales/locales⚓︎

QCM mutabilité et variables globales/locales

Cocher la bonne réponse (cercles) ou les deux bonnes réponses (carrés)

  1. Qu'est-ce qu'une variable globale ?

    • Une variable définie à l'intérieur d'une fonction

    • Une variable définie en dehors de toutes les fonctions

    • Une variable qui ne peut être utilisée que dans une seule fonction

    • Une variable qui est automatiquement supprimée après son utilisation

  2. Comment déclare-t-on une variable globale à l'intérieur d'une fonction ?

    • En utilisant le mot-clé local

    • En utilisant le mot-clé global

    • En utilisant le mot-clé static

    • En utilisant le mot-clé public

  3. Quelle est la portée d'une variable locale ?

    • Elle est accessible partout dans le programme

    • Elle est accessible uniquement dans la fonction où elle est définie et dans les sous-fonctions qui y sont définies.

    • Elle est accessible dans toutes les fonctions

    • Elle est accessible uniquement en dehors des fonctions

  4. Que se passe-t-il si vous essayez d'accéder à une variable locale en dehors de la fonction où elle est définie, ou en dehors d'une de ses sous-fonctions ?

    • Le programme s'exécute normalement

    • Une erreur NameError est levée

    • La variable est automatiquement convertie en variable globale

    • La variable prend une valeur par défaut

  5. Que s'affiche-t-il ?

    x = 10
    
    def modifier_variable():
        global x
        x = 20
    
    modifier_variable()
    print(x)
    

    • 10

    • 20

    • Erreur NameError

    • Erreur SyntaxError

  6. Que s'affiche-t-il ?

    ma_liste = [1, 2, 3]
    
    def ajouter_element():
        ma_liste.append(4)
    
    ajouter_element()
    print(ma_liste)
    

    • [1, 2, 3]

    • [1, 2, 3, 4]

    • Erreur NameError

    • Erreur UnboundLocalError

  7. Que s'affiche-t-il ?

    ma_liste = [1, 2, 3]
    
    def modifier_liste():
        ma_liste = [4, 5, 6]
    
    modifier_liste()
    print(ma_liste)
    

    • [1, 2, 3]

    • [4, 5, 6]

    • Erreur NameError

    • Erreur UnboundLocalError

  8. Que s'affiche-t-il ?

    def modifier_liste(ma_liste):
        ma_liste = [7, 8, 9]
        return ma_liste
    
    ma_liste = [1, 2, 3]
    modifier_liste(ma_liste)
    print(ma_liste)
    

    • [1, 2, 3]

    • [7, 8, 9]

    • [1, 2, 3, 7, 8, 9]

    • Erreur UnboundLocalError

  9. Que s'affiche-t-il ?

    def ajouter_element(ma_liste):
        ma_liste += [4]
    
    ma_liste = [1, 2, 3]
    ajouter_element(ma_liste)
    print(ma_liste)
    

    • [1, 2, 3]

    • [1, 2, 3, 4]

    • Erreur NameError

    • Erreur UnboundLocalError

  10. Que s'affiche-t-il ?

    x = [1, 2, 3]
    
    def modifier_variable():
        x = [4, 5, 6]
        print(x)
    
    modifier_variable()
    print(x)
    

    • [4, 5, 6] 
      [4, 5, 6]
      

    • [4, 5, 6] 
      [1, 2, 3]
      

    • [1, 2, 3] 
      [1, 2, 3]
      

    • [1, 2, 3] 
      [4, 5, 6]
      

  11. Que s'affiche-t-il ?

    def modifier_liste(ma_liste):
        ma_liste.append(4)
        ma_liste = [5, 6, 7]
    
    ma_liste = [1, 2, 3]
    modifier_liste(ma_liste)
    print(ma_liste)
    

    • [1, 2, 3]

    • [1, 2, 3, 4]

    • [5, 6, 7]

    • [1, 2, 3, 5, 6, 7]

  12. Que s'affiche-t-il ?

    def func():
        w = s + 42
    
    s = 0
    func()
    print(s)  
    

    • 0

    • 42

    • Erreur NameError

    • UnboundLocalError

  13. Que s'affiche-t-il ?

    def func():
        s += 42
    
    s = 0
    func()
    print(s)
    

    • 0

    • 42

    • Erreur NameError

    • UnboundLocalError

  14. Que s'affiche-t-il ?

    def func(a):
        a = a + 42
    
    s = 0
    func(s)
    print(s)
    

    • 0

    • 42

    • Erreur NameError

    • UnboundLocalError

  15. Que s'affiche-t-il ?

    def func(a):
        a += 42
    
    s = 0
    func(s)
    print(s)
    

    • 0

    • 42

    • Erreur NameError

    • UnboundLocalError

  16. Que s'affiche-t-il ?

    def func(s):
        s = s + 42
    
    s = 0
    func(s)
    print(s)
    

    • 0

    • 42

    • Erreur NameError

    • UnboundLocalError

  17. Que s'affiche-t-il ? Pourquoi ?

    def func():
        lst.append('hein?')
    
    lst = ['hoho...']
    func()
    print(lst)
    

    • ['hoho...', 'hein?']

    • ['hoho...']

    • Erreur NameError

    • UnboundLocalError

    • Mutation de la variable globale.

    • La variable lst est inconnue dans la fonction.

  18. Que s'affiche-t-il ? Pourquoi ?

    def func():
        lst = ['hein?']
    
    lst = ['hoho...']
    func()
    print(lst)
    

    • ['hoho...']

    • ['hein?']

    • Une variable locale lst a été créée, la variable globale n'a pas été modifiée.

    • La variable globale a été modifiée.

  19. Que s'affiche-t-il ? Pourquoi ?

    def func(lst):
        lst.append('hein?')
    
    ma_liste = ['hoho...']
    func(ma_liste)
    print(ma_liste)
    

    • ['hoho...']

    • ['hoho...', 'hein?']

    • ['hein?']

    • Mutation de la variable locale qui est l'argument passé à la fonction. Puisque les listes sont des objets mutables, toute modification de lst à l’intérieur de la fonction affecte également la liste originale en dehors de la fonction : (Python Tutor)

  20. Que s'affiche-t-il ? Pourquoi ?

    def func(lst):
        lst = ['hein?']
    
    ma_liste = ['hoho...']
    func(ma_liste)
    print(ma_liste)
    

    • ['hoho...']

    • ['hein?']

    • Une variable locale lst a été créée, la variable globale n'a pas été modifiée.

    • La variable globale ma_liste a été modifiée.

  21. Que s'affiche-t-il ? Pourquoi ?

    def func(lst):
        lst += ['hein?']
    
    ma_liste = ['hoho...']
    func(ma_liste)
    print(ma_liste)
    

    • ['hoho...']

    • ['hoho...', 'hein?']

    • Mutation de la variable locale qui est l'argument passé à la fonction. Puisque les listes sont des objets mutables, toute modification de lst à l’intérieur de la fonction affecte également la liste originale en dehors de la fonction : (Python Tutor)

Crédits⚓︎

Avec l'aide judicieuse de Serge Bays et de Frédéric Zinelli.