Bonjour,

J'essaye de comprendre le comportement des générateurs notamment la possibilité de lui envoyer une nouvelle valeur.

Voici mon code (qui ne doit pas être très utile):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def generateur(inf, sup):
    """renvoyer une liste qui transforme les chiffres impairs 
    d'une autre liste en zéros """
    liste = [x * x for x in range(inf,sup)]
    print(liste)
    liste2 = list()
    for i,j in enumerate(liste):
 
        nvl_val = 0
        if j%2==1 :
            j = (yield nvl_val)
            liste2.append(j)
        else :
            yield j
            liste2.append(j)
    print(liste2)
 
a = generateur(5,9)
 
for i in a:
    print(i)
Le résultat est le suivant :

[25, 36, 49, 64]
0
36
0
64
[None, 36, None, 64]
Je ne comprends pas pourquoi j'obtiens des 'None' au lieu de '0'

Quelle est l'explication ?

Merci par avance