dann ist das Beispiel in der Doku allerdings unpassend, denn da steht es so :
Du liest die Doku zu Python 2.4, oder? In der 2.3-er Doku steht es sicherlich nicht so, sondern wie ich es geschrieben habe. Und wenn sich ein Beispiel auf die
Funktion sum bezieht und auch der Kommentar auf diese
Funktion bezieht, kann ich nicht erkennen warum das verwenden eines
syntaktischen Strukturelements (das nun mal rein gar nichts mit sum zu tun hat, nämlich einer Generator-Expression) irgendwas daran ändert dass die
Funktion seit 2.3 unterstützt wird.
Der Unterschied zwischen den beiden? Das erste ist eine sogenannte List-Comprehension, das zweite eine Generator-Comprehension:
Code: Alles auswählen
listcomp = [x**0.5 for x in range(10)]
gencomp = (x**0.5 for x in range(10))
Tipp das mal in den Interpreter und gib dann die Variablen listcomp und gencomp aus. Bei ersterem wird die (versteckte) for-Schleife direkt ausgewertet und aus den Elementen eine Liste gemacht, beim zweiteren kriegst Du einen Iterator für die (versteckte) for-Schleife, wobei eben jedes Element nur on-demand ausgewertet wird (das Iterator-Protokoll definiert dafür .next(); probier mal gencomp.next()).
Sonst: die Python-Doku hält auch noch 'ne ganze Menge über den Unterschied zwischen Generator- und List-Comprehensions bereit.
--- Heiko.