Bonjour à tous,
Je viens de me pencher sur le module itertools et dans la doc Pyrhon, j'y trouve des yield à profusion...
J'ai décidé de tester les exemples proposés...
Et là, ça commence mal.
1er exemple (code obtenu ici : http://docs.python.org/library/itertools.html), 1er problème.
Et moi d'en conclure - bêtement - que si je tape chain('ABC', 'DEF') en ligne de commande, je vais obtenir A B C D E F...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 def chain(*iterables): # chain('ABC', 'DEF') --> A B C D E F for it in iterables: for element in it: yield element
Vous, ça ne va pas vous surprendre, moi, si !
Voilà mes essais :
Les autres exemples sont encore plus intéressants, mais pour chacun, je me heurte au même problème.
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
22
23
24 >>> chain('ABC', 'DEF') <generator object chain at 0x011BE1C0> >>> chain('ABC', 'DEF').next() 'A' >>> for i in range(6): chain('ABC', 'DEF') <generator object chain at 0x011BE2D8> <generator object chain at 0x011BE0F8> <generator object chain at 0x011BE1C0> <generator object chain at 0x011BE2D8> <generator object chain at 0x011BE0F8> <generator object chain at 0x011BE1C0> >>> for i in range(6): print chain('ABC', 'DEF').next() A A A A A A
Je pense que c'est dû à l'emploi de yield, parce que si je remplace yield par return :
Et d'ailleurs pourquoi y a-t-il un affichage ? Il n'y a de print nulle part !?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 >>> chain('ABC', 'DEF') 'A'
Merci de m'éclairer.
@+
Partager