Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Fonctions Génératrices | Function Return Value Specification
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.

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 termine complètement la fonction, yield met en pause la fonction et sauvegarde son état. Lors de l'appel suivant à 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’à l’épuisement du générateur.

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éclenche une erreur 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