Le 28 septembre 2011 19:17, Patt Rick <[email protected]> a écrit : > Pauvre de moi, j'ai jamais fait maths-info ;-) > mais c'est aussi pour ces raisons justement que je demandais > differentes maniere de proceder. >
N’écoute pas Thomas c'est un puriste de l'informatique au vrai sens du terme, toi et moi on est n'est pas Guido Van Rossum, ni Thomas Noel on se moque de combien de secondes un code fait pour s’exécuter, du moment que ça run, on est content.:-), c'est quoi ces histoires de O(n) :-) Blague a part, il n'a pas tord, un bon code est un code optimum en terme de temps d’exécution et de caractères. Python introduit ce qu'on appelle des <iterator> et <generator> utilisé dans le module itertools.py. <iterator> règle le problème superflu des fonctions callback qui sont appelées dans les boucles <for> en permettant un accès aux valeurs des itérations en dehors des boucles. Pourquoi doit on forcement passer une fonction a la boucle pour pouvoir traiter les valeurs de sortie ?. Un autre problème que les <Iterator> règlent est que je peux par exemple sortir des la première itération, ou la seconde ou a tout moment sans être obligé de parcourir tout une liste, ni passer un call_back pour sortir .Avec une itération classique il est plus difficile de garder l’état des variables d’où l'introduction d'une nouvelle manière de faire qui garde l’état d’exécution a chaque appel (yield). A chaque appel la fonction s’exécute jusqu’à yield puis attend la seconde appelle. Ce qui serait génial se serait de comparer le temps d’exécution pour une fonction utilisant la magie de python (yield) et une fonction classique ;) Les Gurus Théorisent ici http://www.python.org/dev/peps/pep-0255/ 1.Ce code est mauvais, callback n'a rien a faire dans test def test(callback, my_list): for i in my_list : if i=2: callback(i) 2.Ce code est meilleur car plus facile a debug class MyIterator(): def __init__(self): pass def __next__(self): while 1: return 2 def __iter__(self): return self for i in MyIterator.__iter__(): callback(i) 3. generator def MyIterator(): yield 2 for i in MyIterator(): callback(i) --Ad
-- Ce message a été envoyé à la liste [email protected] Gestion de votre abonnement : http://dakarlug.org/liste Archives : http://news.gmane.org/gmane.org.user-groups.linux.dakarlug Le site du DakarLUG : http://dakarlug.org
