[Python] richiesta di informazioni.

enrico franchi enrico.franchi a gmail.com
Mer 11 Lug 2012 10:33:53 CEST


2012/7/11 Davide Rambaldi <davide.rambaldi a 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-


Maggiori informazioni sulla lista Python