Aufgeschobene Auswertung mit Lambda in Python
In einer Schleife versuche ich, den Vergleich der beiden value (s) zweier Knoten auf einen späteren Zeitpunkt zu verschieben.
class Node():
def __init__(self, v):
self.v = v
def value(self):
return self.v
nodes = [Node(0), Node(1), Node(2), Node(3), Node(4), Node(2)]
results = []
for i in [0, 1, 2]:
j = i + 3
results.append(lambda: nodes[i].value() == nodes[j].value())
for result in results:
print result
Die Ergebnisse sind alle wahr (weil i, j == 2,5 für alle Lambdas). Wie kann ich die Ausführung des Lambda verschieben, bis es tatsächlich aufgerufen wird, aber mit den richtigen Variablenbindungen? Und die Ausdrücke im Lambda sind nicht unbedingt alle gleich ... es gibt eine Reihe weiterer, stärker involvierter Ausdrücke.
Danke für jede Hilfe!