2012/7/11 Davide Rambaldi <davide.ramba...@gmail.com>: >> >> Tornando al tuo esempio, la versione con yield ti e' venuta cosi', >> naturale, ed e' assolutamente buona. >> La versione "competitiva" ricorsiva (al di la di problemi semantici >> strutturali di python) lo e' un po' meno. > > Beh diciamo che se yield fosse stato piu' lento della mia fibonacci > ricorsiva, mi sarei veramente preoccupato…. :-) > > quella atroce funzione che mi porto in giro dei tempi della scuola mi serve > come "lower limit"
Appunto: con una versione ricorsiva con accumulatore avresti visto che scoppia perche' scoppia lo stack, ma per il resto non e' oltremodo lenta (sempre piu' lenta di una cosa iterativa, visto e considerato che le chiamate di funzione hanno in se e per se un costo non indifferente in Python). Quello che vorrei scoraggiare e' vedere yield come strumento per le perforamance: accidentalmente puo' fare anche questo. Ma io direi che e' soprattutto uno strumento generale per risolvere una certa classe di problemi in modo comodo ed elegante. La classe di problemi e' "generare una sequenza di valori". Da cui ovviamente discende fibonacci, l'iterazione con un qualunque criterio sugli elementi di una struttura dati, ma anche la generazione di una sequenza di linee \n-terminated a partire da quello che esce da un socket. Per dire. -- . ..: -enrico- _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python