Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Introduction aux Générateurs | Itérateurs et Générateurs
Concepts Avancés de Python
course content

Contenu du cours

Concepts Avancés de Python

Concepts Avancés de Python

1. Modules et Imports
2. Gestion des Erreurs
3. Gestion des Fichiers
4. Cadre Pytest
5. Cadre Unittest
6. Itérateurs et Générateurs

book
Introduction aux Générateurs

Les générateurs simplifient l'évaluation paresseuse en fournissant un moyen concis et lisible de créer des itérateurs. Alors qu'un itérateur est implémenté comme une classe avec les méthodes __iter__() et __next__(), un générateur est implémenté comme une fonction qui utilise le mot-clé yield pour produire des valeurs une à la fois. Les générateurs maintiennent automatiquement leur état entre les appels, les rendant plus intuitifs et efficaces pour de nombreux cas d'utilisation.

Un générateur est un type spécial de fonction qui :

  1. Utilise le mot-clé yield au lieu de return ;
  2. Met en pause l'exécution et conserve son état lorsque yield est appelé ;
  3. Reprend l'exécution là où elle s'était arrêtée lorsque le générateur est appelé à nouveau.
123456789
def example_generator(): yield "First value" yield "Second value" yield "Third value" gen = example_generator() print(next(gen)) # Output: First value print(next(gen)) # Output: Second value print(next(gen)) # Output: Third value
copy
12345678910
import random def limited_dice_roller(num_rolls): for _ in range(num_rolls): yield random.randint(1, 6) # Using the limited dice roller print("Rolling the dice:") for roll in limited_dice_roller(5): print(f"Rolled: {roll}")
copy

Différences entre Itérateur et Générateur

Tâche

Swipe to start coding

Dans la tâche précédente, vous avez implémenté un lanceur de dés infini en utilisant une classe d'itérateur personnalisée. Maintenant, vous allez simplifier la même fonctionnalité en utilisant une fonction génératrice. Les générateurs offrent un moyen concis et lisible de produire des valeurs de manière paresseuse en utilisant le mot-clé yield.

  1. Définissez la fonction génératrice. Utilisez le mot-clé yield dans la fonction dice_roller pour produire des lancers de dés aléatoires entre 1 et 6. Utilisez la fonction random.randint() pour simuler chaque lancer.
  2. Appelez la fonction dice_roller() pour créer un objet générateur et assignez-le à la variable dice_generator.
  3. Utilisez une boucle for avec enumerate() pour itérer sur le générateur. Arrêtez l'itération après 10 lancers en utilisant une condition if et l'instruction break.

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 6. Chapitre 4
toggle bottom row

book
Introduction aux Générateurs

Les générateurs simplifient l'évaluation paresseuse en fournissant un moyen concis et lisible de créer des itérateurs. Alors qu'un itérateur est implémenté comme une classe avec les méthodes __iter__() et __next__(), un générateur est implémenté comme une fonction qui utilise le mot-clé yield pour produire des valeurs une à la fois. Les générateurs maintiennent automatiquement leur état entre les appels, les rendant plus intuitifs et efficaces pour de nombreux cas d'utilisation.

Un générateur est un type spécial de fonction qui :

  1. Utilise le mot-clé yield au lieu de return ;
  2. Met en pause l'exécution et conserve son état lorsque yield est appelé ;
  3. Reprend l'exécution là où elle s'était arrêtée lorsque le générateur est appelé à nouveau.
123456789
def example_generator(): yield "First value" yield "Second value" yield "Third value" gen = example_generator() print(next(gen)) # Output: First value print(next(gen)) # Output: Second value print(next(gen)) # Output: Third value
copy
12345678910
import random def limited_dice_roller(num_rolls): for _ in range(num_rolls): yield random.randint(1, 6) # Using the limited dice roller print("Rolling the dice:") for roll in limited_dice_roller(5): print(f"Rolled: {roll}")
copy

Différences entre Itérateur et Générateur

Tâche

Swipe to start coding

Dans la tâche précédente, vous avez implémenté un lanceur de dés infini en utilisant une classe d'itérateur personnalisée. Maintenant, vous allez simplifier la même fonctionnalité en utilisant une fonction génératrice. Les générateurs offrent un moyen concis et lisible de produire des valeurs de manière paresseuse en utilisant le mot-clé yield.

  1. Définissez la fonction génératrice. Utilisez le mot-clé yield dans la fonction dice_roller pour produire des lancers de dés aléatoires entre 1 et 6. Utilisez la fonction random.randint() pour simuler chaque lancer.
  2. Appelez la fonction dice_roller() pour créer un objet générateur et assignez-le à la variable dice_generator.
  3. Utilisez une boucle for avec enumerate() pour itérer sur le générateur. Arrêtez l'itération après 10 lancers en utilisant une condition if et l'instruction break.

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 6. Chapitre 4
Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
We're sorry to hear that something went wrong. What happened?
some-alt