lambda функции в асинхронном проекте

Можно ли безопасно использовать lambda-функции в асинхронном многопользовательском телеграм боте?


Ответы (2 шт):

Автор решения: zerxa

Lambda функции - это просто анонимные функции в PY и они не представляют угрозы как и любые другие функции, но исключения могут быть к примеру когда лямбда функции замыкают измененные переменные. Но у них так же и минусы есть - нельзя передавать между процессами, нельзя сохранять в очереди, нельзя использовать await и так далее. Смотря что вы подразумеваете под вопросом "а безопасно ли?", если есть возможность их избежать - избегайте, всё зависит от ваших задач и понимания устройства функций в PY.

→ Ссылка
Автор решения: krabnerab

По поводу замыкания переменной в lambda функциях.

arr = []
for i in range(3):
    arr.append(lambda: i)

print([a() for a in arr])

в этом примере lambda функции ссылаются на одну и ту же переменную i (счетчик цикла) и в результате мы получим массив [2, 2, 2] Чтобы обойти замыкание, мы можем привязывать текущее значение i, как значение по умолчанию в параметр функции:

arr = []
for i in range(3):
    arr.append(lambda i=i : i)
print([a() for a in arr])

и в результате получим массив [0, 1, 2]

→ Ссылка