Das ist fast sicher ein Ergebnis meiner Unkenntnis, wie Generatoren funktionieren, aber ich bin völlig verloren.Warum wird diese Python-Generator-Funktion nur einmal korrekt ausgeführt?
Wenn ich interaktiv den folgenden Generator erstellen:
def neighborhood(iterable):
iterator = iter(iterable)
prev = None
item = next(iterator)
for post in iterator:
yield (prev,item,post)
prev = item
item = post
yield (prev,item,None)
und es dann gerne testen:
for prev,item,next in neighborhood([1,2,3,4,5]):
print(prev, item, next)
Es produziert:
None 1 2
1 2 3
2 3 4
3 4 5
4 5 None
wie erwartet. Wenn ich es wieder laufen, oder versuchen Sie es in irgendeiner Weise neu zu definieren, erhalte ich eine
'NoneType' Objekt ist nicht aufrufbar“
Fehler.
Dang es. Ja. So dumm. – WildGunman