Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Fonctions Génératrices | Spécification de la valeur de retour de fonction
Tutoriel sur les Fonctions Python
Section 4. Chapitre 4
single

single

Fonctions Génératrices

Glissez pour afficher le menu

Note
Définition

Une fonction génératrice est un type particulier de fonction qui utilise le mot-clé yield au lieu de return pour générer une séquence de valeurs. Lorsqu'une fonction génératrice est appelée, elle retourne un objet itérateur, qui peut être parcouru pour récupérer les valeurs une à une.

Note
Définition

Un objet itérateur est un objet qui implémente le protocole d'itérateur en définissant les méthodes __iter__() et __next__(). Cela permet de récupérer les éléments un par un avec next(), rendant possible la boucle sur des éléments dans des séquences ou des fonctions génératrices.

Le principal avantage des fonctions génératrices est leur efficacité mémoire. Au lieu de générer toute la séquence à l'avance et de la stocker en mémoire, les générateurs produisent les valeurs à la volée lorsqu'elles sont nécessaires.

Fonctionnement de yield

Contrairement à return, qui quitte complètement la fonction, yield met en pause la fonction et sauvegarde son état. Lors du prochain appel à next(), le générateur reprend exactement là où il s'était arrêté :

12345678910
def count_up(start, stop): while start <= stop: yield start # Pause and return the current value start += 1 # Resume from here on the next call counter = count_up(1, 3) print(next(counter)) # 1 print(next(counter)) # 2 print(next(counter)) # 3

Il est également possible d’itérer sur un générateur à l’aide d’une boucle for – celle-ci appelle automatiquement next() jusqu’à ce que le générateur soit épuisé :

1234567
def count_up(start, stop): while start <= stop: yield start start += 1 for value in count_up(1, 5): print(value) # 1, 2, 3, 4, 5
Note
Remarque

Lorsqu'un générateur est épuisé (plus aucune valeur à produire), appeler next() dessus déclenchera une exception StopIteration. Une boucle for gère cela automatiquement.

Tâche

Glissez pour commencer à coder

Implémenter une fonction génératrice even_numbers qui produit les nombres pairs dans une plage donnée.

  1. Définir une fonction génératrice even_numbers prenant deux paramètres : start et stop.
  2. Utiliser une boucle while pour itérer tant que start est inférieur ou égal à stop.
  3. Utiliser yield pour retourner start uniquement s'il est pair (divisible par 2).
  4. Incrémenter start de 1 après chaque itération.
  5. Utiliser une boucle for pour afficher toutes les valeurs générées.

Solution

Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 4
single

single

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

some-alt