Operador Walrus (`:=`): Atribuição em Expressões
Introduzido no Python 3.8, o operador walrus (:=) gerou bastante discussão quando apareceu pela primeira vez.
À primeira vista, ele pode parecer apenas açúcar sintático. Mas, depois de usá-lo em código real — especialmente em loops e validações — fica claro que o walrus operator não é sobre “código esperto”, e sim sobre reduzir duplicações quando faz sentido.
Neste post, mostro quando o operador walrus realmente ajuda e quando é melhor evitá-lo.
Quando o operador walrus realmente ajuda
O operador walrus permite atribuir um valor e usá-lo na mesma expressão.
Ele costuma ser útil quando:
- Você quer evitar repetir chamadas de função ou expressões
- Quer manter lógicas relacionadas no mesmo lugar
- Está escrevendo loops ou condicionais com valores intermediários
Quando bem usado, ele deixa o código mais curto sem perder clareza.
Exemplo sem o operador walrus
data = input("Digite algo: ")
while data != "quit":
print(f"Você digitou: {data}")
data = input("Digite algo: ")
Exemplo com o operador walrus
while (data := input("Digite algo: ")) != "quit":
print(f"Você digitou: {data}")
Outro exemplo prático
numbers = [1, 2, 3, 4, 5]
if (length := len(numbers)) > 3:
print(f"A lista tem {length} elementos")
Um erro comum a evitar
# Difícil de ler — evite
if (n := len(data)) > 10 and (avg := sum(data) / n) > 5:
process(data)
Conclusão
Na minha experiência, o operador walrus funciona melhor quando remove duplicações e mantém a lógica relacionada no mesmo lugar.
Se o uso dele torna a linha mais difícil de ler, normalmente é um sinal de que ele não deveria estar ali.