Страницы

Поиск по вопросам

пятница, 14 декабря 2018 г.

Почему не работает присваивание переменной значения в lambda функции?

def _create_candle(self, index): candle = Candle(index) self.candles.append(candle)
def o(response): candle.open = response.result
def h(response): candle.high = response.result
def l(response): candle.low = response.result
def c(response): candle.close = response.result
def v(response): candle.volume = response.result
def t(response): candle.time = response.result
self._api.send("O", lambda response: candle.open = response.result, self._ds_id, index) # не работает self._api.send("H", h, self._ds_id, index) self._api.send("L", l, self._ds_id, index) self._api.send("C", c, self._ds_id, index) self._api.send("V", v, self._ds_id, index) self._api.send("T", t, self._ds_id, index)


Ответ

В лябмдах нельзя присваивать элементы.
Попытки присвоить приведут к ошибке: SyntaxError: can't assign to lambda
Но можно попытаться обойти ограничение, пример:
class Foo: pass
f = Foo() f.a = 10 print(f.a) # 10
# result = lambda x: f.a = x # Ошибка result = lambda x: setattr(f, 'a', x) result(78) print(f.a) # 78
result('abc') print(f.a) # abc

Комментариев нет:

Отправить комментарий