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Сообщить о неточности