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

Rispondere a