• Aucun résultat trouvé

Python yield

N/A
N/A
Protected

Academic year: 2022

Partager "Python yield"

Copied!
6
0
0

Texte intégral

(1)

Python yield

Nicolas Delestre

(2)

Concept

Python permet grˆace `a l’instruction yieldde cr´eer des fonctions dont leurs r´esultats puissent ˆetre utilis´es comme des s´equences sans qu’ils ne le soient

Cela permet :

de ne calculer que les ´el´ements r´eellement utilis´es (gain en temps et en espace m´emoire) de pouvoir cr´eer des s´equences infinies

Instruction yield

´

equivalent d’unreturnqui retourne une valeur

au prochain ´el´ement demand´e, la fonction reprend o`u elle s’´etait arr´et´ee, jusqu’au prochainyieldou `a la fin de la fonction

dans 99% du temps leyieldest au sein d’une it´eration (finie ou infinie) la fonction retourne en fait unen´erateur

(3)

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 iin 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 notborne_max or i <= borne_max:

5 if est_premier(i):

6 yield i

7 i = i + 2

(4)

Affichage des nombres premiers inf´erieurs `a 30

>>> for i in nombres_premiers(30):

print(i) ...:

2 3 5 7 11 13 17 19 23 29

>>>

(5)

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

Calcul du premier nombre premier superieur `a 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

>>>

(6)

L’instructionyield permet de cr´eer des it´erateurs qui calculent les valeurs`a la demande

Python s’inspire du langage CLU (1977)

On retrouve cette instruction dans quelques autres langages tels que Javascript, Ruby ou C#

Références

Documents relatifs

Expliquer pourquoi cette fonction ne convient pas et proposer une modification qui permette d’obtenir la fonction voulue.

Cependant, cette fonction ne convient pas car, dans la boucle for, lors du calcul de v, on a besoin de la valeur de u telle qu’elle était à l’entrée de la boucle. Or, cette valeur

from sklearn.ensemble import GradientBoostingClassifier from sklearn.cross_validation import train_test_split digits = load _digits(). X = digits.data y

C’est ce que nous allons observer en simulant la croissance de ces cellules en fonction de différents ratios N 0 initiaux et des valeurs de r différentes. • Prendre en main le

En utilisant la fonction randint du module random, écrire une fonction Jeu qui prend en paramètre un nombre entier n stritement positif, simule n fois le tirage d’un dé

En utilisant la fonction randint du module random , écrire une fonction Jeu qui prend en paramètre un nombre entier n stritement positif, simule n fois le tirage d’un dé

import absmod3 cherche dans le répertoire courant le fichier absmod3.py , puis dans la liste des répertoires définis dans la variable d’environnement PYTHONPATH et enfin dans

 Créer un module contenant les fonctions créées et utiliser la méthode import dans le programme principal.. Travail