Que fait le mot-clé 'yield' en Python ?

Comprendre l'Utilisation du Mot-Clé 'Yield' en Python

Le mot-clé 'yield' en Python a une utilisation très spécifique - il transforme une fonction en générateur. Mais que signifie exactement cela ?

Fonctions Générateurs

Les generators sont un type de fonction particulier en Python. Au lieu de retourner une valeur et de terminer, les générateurs sont des fonctions qui peuvent être suspendues, en renvoyant une séquence de valeurs, et reprises où ils ont été arrêtées.

Pour créer une fonction générateur, on utilise le mot-clé 'yield' à la place de 'return'. Lorsque la fonction est appelée, cela crée un objet générateur, mais ne commence pas à exécuter la fonction.

Comment 'Yield' Fonctionne

Lorsque la méthode spéciale 'next()' est appelée sur l'objet générateur, la fonction commence à être exécutée jusqu'à ce qu'elle atteigne 'yield', à ce moment-là, elle renvoie sa valeur. Lorsque la méthode 'next()' est appelée à nouveau, la fonction se poursuit à partir de là jusqu'à atteindre la prochaine instruction 'yield'.

Voici un exemple simple pour illustrer cela :

def num_generator(n):
    num = 0
    while num < n:
        yield num
        num += 1

gen = num_generator(5)
print(next(gen))  # 0
print(next(gen))  # 1
# et ainsi de suite jusqu&#039;à 4

Dans cet exemple, num_generator est une fonction avec le mot-clé 'yield'. Chaque fois que 'next()' est appelé sur le générateur 'gen', il renvoie le prochain nombre dans la séquence jusqu'à 4.

Avantages des Générateurs

L'un des avantages significatifs des générateurs est qu'ils sont plus efficaces en termes de mémoire que les listes ou les autres conteneurs. En effet, ils ne produisent les valeurs qu'à la demande (paresseusement), plutôt que de les stocker entièrement dans la mémoire. Cela les rend particulièrement utiles lorsque vous travaillez avec de grandes séquences de données.

Il est important de noter que si le mot-clé 'yield' transforme une fonction en générateur, il ne suspend pas l'exécution de la fonction, il ne quitte pas une boucle, et il ne quitte pas une fonction, ce qui étaient les autres options proposées dans le questionnaire.

En somme, comprendre le mot-clé 'yield' et savoir comment l'utiliser efficacement dans des fonctions générateurs peut vous aider à écrire un code plus propre et plus performant en Python.

Trouvez-vous cela utile?