Компонент Routes не обновляется при изменении состояния, console.log показывает противоположное поведение компонента

Измените x.append(lambda : pv(v)) на x.append(lambda v=v: pv(v)).

Вы ожидаете, что «python lambdas привязывается к ссылке, на которую указывает локальная переменная, за сценой», но это не так, как работает Python. Python ищет имя переменной во время вызова функции, а не когда она создается. Использование аргумента по умолчанию работает, потому что аргументы по умолчанию оцениваются при создании функции, а не при ее вызове.

Это не что-то особенное в отношении лямбда. Рассмотрим:

x = "before foo defined"
def foo():
    print x
x = "after foo was defined"
foo()

печатает

after foo was defined
1
задан Tholle 17 March 2019 в 21:44
поделиться