Easywalrus
Что такое walrus operator (:=)?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Walrus operator := (Python 3.8, PEP 572) — assignment expression: присваивает и возвращает значение одновременно.
# Без walrus
n = len(data)
if n > 10:
print(n)
# С walrus — компактнее
if (n := len(data)) > 10:
print(n)
# В while — чтение до конца
while (line := f.readline()) != '':
process(line)
# В comprehension — вычислили один раз, использовали в фильтре и expression
result = [y for x in data if (y := f(x)) is not None]- Применения: избежать повторного вызова функции, lazy init, компактные циклы;
- В comprehension только в condition (не в expression напрямую);
- Читаемость спорная — лучше для коротких случаев, не злоупотреблять.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.