Contenu du cours
Concepts Avancés de Python
Concepts Avancés de Python
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 :
- Utilise le mot-clé
yield
au lieu dereturn
; - Met en pause l'exécution et conserve son état lorsque yield est appelé ;
- Reprend l'exécution là où elle s'était arrêtée lorsque le générateur est appelé à nouveau.
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
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}")
Différences entre Itérateur et Générateur
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
.
- 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 entre1
et6
. Utilisez la fonctionrandom.randint()
pour simuler chaque lancer. - Appelez la fonction
dice_roller()
pour créer un objet générateur et assignez-le à la variabledice_generator
. - Utilisez une boucle
for
avecenumerate()
pour itérer sur le générateur. Arrêtez l'itération après10
lancers en utilisant une conditionif
et l'instructionbreak
.
Solution
Merci pour vos commentaires !
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 :
- Utilise le mot-clé
yield
au lieu dereturn
; - Met en pause l'exécution et conserve son état lorsque yield est appelé ;
- Reprend l'exécution là où elle s'était arrêtée lorsque le générateur est appelé à nouveau.
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
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}")
Différences entre Itérateur et Générateur
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
.
- 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 entre1
et6
. Utilisez la fonctionrandom.randint()
pour simuler chaque lancer. - Appelez la fonction
dice_roller()
pour créer un objet générateur et assignez-le à la variabledice_generator
. - Utilisez une boucle
for
avecenumerate()
pour itérer sur le générateur. Arrêtez l'itération après10
lancers en utilisant une conditionif
et l'instructionbreak
.
Solution
Merci pour vos commentaires !