Comprendre les générateurs en Python : le point de vue d'un programmeur Java
Les générateurs sont une fonctionnalité unique en Python qui offre un moyen efficace en mémoire pour produire un séquence de valeurs. Bien que l'équivalent Java des générateurs soit le threading, les générateurs constituent un mécanisme distinct qui complète le modèle consommateur-producteur traditionnel.
Qu'est-ce qu'un générateur ?
Un générateur est un fonction qui se comporte comme un itérable, donnant ses valeurs une par une plutôt que de renvoyer toutes ses valeurs à la fois. Ceci est réalisé à l'aide du mot-clé rendement, qui suspend l'exécution de la fonction jusqu'à son prochain appel.
Pourquoi utiliser des générateurs ?
Les générateurs offrent plusieurs avantages :
Exemple :
Considérons le code Python suivant qui génère des nombres de Fibonacci :
def fib(): a, b = 0, 1 while True: yield a a, b = b, a + b
Cette fonction génératrice donne le prochain Numéro de Fibonacci à chaque appel. L'extrait de code suivant montre comment utiliser le générateur :
import itertools fib_numbers = list(itertools.islice(fib(), 10)) print(fib_numbers)
Comparaison Java :
Java n'a pas d'équivalent direct pour les générateurs Python. Cependant, il est possible de simuler leur comportement à l’aide de lambdas itératifs ou de références de méthodes. Par exemple, les nombres de Fibonacci pourraient être générés en Java en utilisant un lambda :
public static Stream<Integer> fib() { int a = 0, b = 1; Stream<Integer> stream = Stream.iterate(a, n -> { int tmp = n; n = a + b; a = tmp; return n; }); return stream; }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!