Ok mi sembra di aver capito….

Sembra anche decisamente piu veloce delle funzioni ricorsive con return….

cfr: https://gist.github.com/3082523

sulla mia macchina, con generator:

0.0001380443573 seconds

con funzione ricorsiva:

0.908564090729 seconds


che come test fa un po schifo, ma rende l'idea

Fico! Grazie!

Davide




On Jul 10, 2012, at 11:41 AM, enrico franchi wrote:

> 
> 
> 2012/7/10 Davide Rambaldi <davide.ramba...@gmail.com>
> 
> Ma non viene descritto in Dive into Python (almeno non nei primi11 capitoli 
> che mi sono sparato)
> 
>  Direi che quel libro e' vecchio come il cucco...
> 
> 
>  
> Che funzione ha?
> 
> Implementare anamorfismi con sintassi e semantica imperative... 
> 
>  
> Ad occhio mi sembra più simile ad uno strumento per fare iteration in 
> strutture dati (stile STL in C++)
> 
> E' uno strumento per fare iterazione (fra le varie cose). Anzi... direi per 
> fare *generazione*. E di fatto non e' particolarmente legato al concetto di 
> struttura dati, anzi, essenzialmente e' completamente ortogonale. Che poi 
> funzioni bene anche con le strutture dati e' ovviamente un'altra questione.
> 
> In pratica una funzione che contiene yield diventa "magica". Invece di 
> ritornare un valore, ritorna un generatore.
> Quando tu cerchi di ottenere un elemento dal generatore, lui esegue il corpo 
> della funzione fino a trovare uno yield e poi ritorna il valore yieldato. 
> Quando gli chiedi un altro valore, lui riparte da dove era arrivato e va fino 
> al successivo. Quando la cosa termina, lancia StopIteration.
> 
> Per dire... puoi usare la cosa sia per fare un affare che ti fa visite su un 
> grafo, sia un coso che ti genera tutti i primi (ovviamente un numero 
> arbitrariamente grande di essi, tutti no poiche' sono infiniti).
> 
> Come lo utilizzate in python?
> 
> Generatori, coroutines, lazyness, concorrenza, cornetto & cappuccino.
> 
> 
> -- 
> .
> ..: -enrico-
> _______________________________________________
> Python mailing list
> Python@lists.python.it
> http://lists.python.it/mailman/listinfo/python

_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a