Bonjour,
une petite question de syntaxe (qui cache peut être une question de philosophie pythonienne) à propos de yield :
Voici un petit exemple d'école pour illustrer ma question :
Je voudrais afficher les 5 premières valeurs renvoyées par une ch'tite fonction avec un yield,
et je n'y arrive qu'avec une syntaxe moche (à mon goût) :Y a-t-il un moyen de concilier les 2 ?
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 # ch'tite fonction avec yield def values (): n = 5 while True : yield n n = n*2 - 4 # syntaxe qui marche, mais qui ne me convient pas : for i,x in enumerate( values()) : if i > 4 : break print x # syntaxe qui ne marche pas, mais qui me conviendrait : for i in xrange( 5 ): print values()
Petite précision : ma fonction values n'est pas forcement appelée depuis une boucle for ... xrange.
Ce que je voudrais, c'est que quelque soit le contexte depuis lequel je l'appelle, elle continue à me donner les valeurs suivantes.
Un truc du genre :Bien sûr, je pourrais faire ça avec une variable globale...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 if values() > 3 : print values(),values() spam = values()*values() print spam + values()
Mais primo, ceci est un cas d'école, beaucoup plus simple que mon vrai problème, et secondo, je trouverais ça plus élégant avec yield !
Merci !
Partager