Avaliação diferida com lambda em Python
Em um loop, estou tentando adiar a comparação dos dois valores () s de dois Nós para um momento posterior.
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
Os resultados são todos verdadeiros (porque i, j == 2,5 para todos os lambdas). Como posso adiar a execução do lambda até que seja realmente chamado, mas com as ligações de variável corretas? E as expressões no lambda não são necessariamente todas iguais ... há um monte de outras expressões mais envolvidas.
Obrigado por qualquer ajuda!