Python Glossary English

Python 3.8+Арифметика и операторыпонятие

Walrus operator :=

операторы

Оператор «морж» (:=) — присваивает значение переменной прямо внутри выражения (Python 3.8+). Удобен в условиях while, в list comprehension и в if.

Синтаксис

variable := expression

Приоритет у := ниже почти всех операторов, поэтому в условиях его почти всегда оборачивают в скобки: if (n := len(s)) > 10. Отдельной строкой вместо обычного = он не работает — n := 10 на верхнем уровне это SyntaxError. Главная выгода не в краткости, а в том, что значение вычисляется один раз и не приходится звать одну и ту же функцию дважды: в условии и в теле.

Примеры

data = [1, 2, 3, 4]
while chunk := data[:2]:
    data = data[2:]
    print(chunk)  # → [1, 2], затем [3, 4]
nums = [1, -2, 3, -4]
pos = [y for x in nums if (y := x * 2) > 0]
print(pos)  # → [2, 6]
s = "abcdef"
if (n := len(s)) > 3:
    print(n)  # → 6
if m := len(s) > 3:
    print(m)  # → True — без скобок в m попал результат сравнения

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности