0% ont trouvé ce document utile (0 vote)
26 vues6 pages

Python Yield: Générateurs et Itération Efficace

L'instruction 'yield' en Python permet de créer des fonctions génératrices qui produisent des valeurs à la demande, optimisant ainsi le temps et l'espace mémoire. Cela permet également de générer des séquences infinies, comme dans l'exemple des nombres premiers. Cette fonctionnalité est inspirée du langage CLU et se retrouve dans d'autres langages comme Javascript, Ruby ou C#.

Transféré par

lahbabi1994
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
26 vues6 pages

Python Yield: Générateurs et Itération Efficace

L'instruction 'yield' en Python permet de créer des fonctions génératrices qui produisent des valeurs à la demande, optimisant ainsi le temps et l'espace mémoire. Cela permet également de générer des séquences infinies, comme dans l'exemple des nombres premiers. Cette fonctionnalité est inspirée du langage CLU et se retrouve dans d'autres langages comme Javascript, Ruby ou C#.

Transféré par

lahbabi1994
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Python

yield

Nicolas Delestre

Expr. λ, etc. - v1.1 1/6


Itération sans séquence

Concept
Python permet grâce à l’instruction yield de créer des fonctions dont leurs résultats
puissent être utilisés comme des séquences sans qu’ils ne le soient
Cela permet :
de ne calculer que les éléments réellement utilisés (gain en temps et en espace mémoire)
de pouvoir créer des séquences  infinies 

Instruction yield
équivalent d’un return qui retourne une valeur
au prochain élément demandé, la fonction reprend où elle s’était arrétée, jusqu’au prochain yield ou à
la fin de la fonction
dans 99% du temps le yield est au sein d’une itération (finie ou infinie)
la fonction retourne en fait un  générateur 

Expr. λ, etc. - v1.1 2/6


Exemple : une fonction qui retourne les nombres premiers 1 / 3
est premier
def est_premier(n):
if n % 2 == 0:
return False
else :
borne = int(numpy.sqrt(n)) + 1
for i in range(3, borne, 2):
if n % i == 0:
return False
return True

nombres premiers
1 def nombres_premiers(borne_max = None):
2 yield 2
3 i = 3
4 while not borne_max or i <= borne_max:
5 if est_premier(i):
6 yield i
7 i = i + 2

Expr. λ, etc. - v1.1 3/6


Exemple : une fonction qui retourne les nombres premiers 2 / 3

Affichage des nombres premiers inférieurs à 30


>>> for i in nombres_premiers(30):
print(i)
...:
2
3
5
7
11
13
17
19
23
29
>>>

Expr. λ, etc. - v1.1 4/6


Exemple : une fonction qui retourne les nombres premiers 3 / 3

Calcul du premier nombre premier superieur à n

def premier_nombre_premier_superieur_a(n):
for i in nombres_premiers():
if i >= n:
return i
>>> premier_nombre_premier_superieur_a(101548)
101561
>>>

Expr. λ, etc. - v1.1 5/6


Conclusion

L’instruction yield permet de créer des itérateurs qui calculent les valeurs  à la
demande 
Python s’inspire du langage CLU (1977)
On retrouve cette instruction dans quelques autres langages tels que Javascript, Ruby ou
C#

Expr. λ, etc. - v1.1 6/6

Vous aimerez peut-être aussi