Odroczona ocena za pomocą lambda w Pythonie
W pętli próbuję odroczyć porównanie dwóch wartości () s dwóch węzłów do późniejszego czasu.
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
Wszystkie wyniki są prawdziwe (ponieważ i, j == 2,5 dla wszystkich lambd). Jak mogę odroczyć wykonanie lambda, dopóki nie zostanie ono faktycznie wywołane, ale z poprawnymi powiązaniami zmiennych? A wyrażenia w lambdzie niekoniecznie są równe ... istnieje wiele innych bardziej zaangażowanych wyrażeń.
Dzięki za pomoc!