Ciao a tutti, dopo la figuraccia di ieri con il yield toppato...mi sono accorto che mi ero mangiato un while. Come " rimborso" ecco tre implementazioni possibili: la prima è la meno carina (per via del range), la seconda è la più ovvia (e anche l'originale prima della sparizione del while), la terza forse la più elegante (per la separazione del caso normale da quello eccezionale usando il while/else che ci aveva lasciati perplessi e per considerare la raise il modo "normale" di terminare il loop, che per l'implementazione richiesta dall'iteratore è pure giusto. ). bye, Luca def foo(): "generator using for and range" for i in range (10): if i > 9: raise StopIteration yield i i += 1 def zot(): "generator using while" i = 0 while 1: if i > 9: raise StopIteration yield i i += 1 def bar(): "generator using while/else" i = 0 while i < 10: yield i i += 1 else: raise StopIteration if __name__ == "__main__": def go(f): "testing function" for i in f(): print i, print map (go, (foo, bar, zot)) -- Per iscriversi (o disiscriversi), basta spedire un messaggio con OGGETTO "subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx