Python 3.2: __next__
Python 3 verwendet öfters Iteratoren als Python 2, so lieferen dict().keys(), dict().values(), dict.items() inzwischen Iteratoren statt Listen.
In Python 2 wurde dafür extra dict().iterkeys(), dict().itervalues(), dict().iteritems() hinzugefügt, die es in Python 3 nicht mehr gibt.
Das führt mit Python 3 aber dazu, das Konstrukte wie dict().keys() + dict().keys() nicht mehr funktioniert, weil hier jetzt zwei Iteratoren per + verknüpft werden soll anstatt von zwei Listen.
Man kann dafür itertools.chain() verwenden oder muss es eben explizit umschreiben in list(dict().keys()) + list(dict().keys()).
Auch aufpassen muss man wenn man eigene Iteratoren implementiert hat:
Früher musste man die Methode next() implementieren, mit Python 3 statt dessen __next__().
Für für Rückwärtskompatibilität für Python 2 kann man dann einfach next = __next__ ergänzen (und das in Zukunft dann irgendwann entfernen).
Siehe Iterators für genauere Details.