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 подскажет развёрнутый ответ в реальном времени.