Отложенная оценка с помощью лямбда в Python

В цикле я пытаюсь отложить сравнение двух значений() s двух узлов на более позднее время.

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

Все результаты верны (поскольку i,j==2,5 для всех лямбд). Как я могу отложить выполнение лямбды до ее фактического вызова, но с правильными привязками переменных? И выражения в лямбда-выражениях не обязательно равны... есть куча других более сложных выражений.

Спасибо за любую помощь!

9
задан Albeit 18 June 2012 в 16:26
поделиться