Operadores de atribuição
Os operadores de atribuição em Python
O que são os operadores de atribuição
Os operadores de atribuição são usados para armazenar valores em variáveis, ou seja, para atribuir algo a elas. Eles aparecem em praticamente todo código Python, desde um simples x = 5 até expressões mais complexas.
O operador básico =
O operador de atribuição mais simples é o =, que já vimos em todos os exemplos em que armazenamos um valor em uma variável. Aqui, x recebe o número 5, e y recebe a string "Python":
1x = 5 2y = "Python" 3 4print(x) 5print(y) 6 7# Saída: 8# 5 9# Python
Operadores de atribuição compostos
O Python também oferece versões "encurtadas" dos operadores aritméticos. Eles realizam uma operação e reutilizam o próprio resultado na mesma variável, deixando o código mais curto e legível.
Em vez de escrever:
1x = x + 3
podemos simplificar para:
1x += 3
Vamos ver todos os operadores compostos e o que cada um faz.
| Operador | Exemplo | Equivalente a | Descrição |
|---|---|---|---|
+= | x += 3 | x = x + 3 | Soma e atribui o resultado |
-= | x -= 3 | x = x - 3 | Subtrai e atribui o resultado |
*= | x *= 3 | x = x * 3 | Multiplica e atribui o resultado |
/= | x /= 3 | x = x / 3 | Divide e atribui o resultado |
%= | x %= 3 | x = x % 3 | Atribui o resto da divisão |
//= | x //= 3 | x = x // 3 | Faz divisão inteira e atribui o resultado |
**= | x **= 3 | x = x ** 3 | Eleva à potência e atribui o resultado |
Adição (+=) e subtração (-=)
Esses são os mais usados no dia a dia. Eles consideram o valor que já existem dentro da variável e somam ou subtraem o valor que aparece após o operador:
1x = 10 2x += 5 # x = 10 + 5 3print(x) # Saída: 15 4 5x -= 3 # x = 15 - 3 6print(x) # Saída: 12
Repare que o valor de x muda a cada operação. O próprio Python atualiza o valor com base na conta feita.
Multiplicação (*=) e divisão (/=)
Assim como a adição e a subtração, esses operadores fazem o cálculo e armazenam o novo valor na própria variável. São úteis quando queremos atualizar o valor com base em uma multiplicação ou divisão sem precisar repetir o nome da variável.
1x = 4 2x *= 2 # x = 4 * 2 3print(x) # Saída: 8 4 5x /= 4 # x = 8 / 4 6print(x) # Saída: 2.0
Importante: Apesar do valor de
xser inteiro no começo, após a divisão, ele se torna um número do tipofloat, porque o resultado de uma divisão comum em Python é sempre decimal.
Divisão inteira (//=) e módulo (%=)
Esses dois operadores lidam com divisões de forma mais específica. O operador //= atribui apenas a parte inteira da divisão à variável, enquanto %= atribui o resto dela.
1x = 17 2x //= 5 # x = 17 // 5 3print(x) # Saída: 3 4 5x %= 2 # x = 3 % 2 6print(x) # Saída: 1
Exponenciação (**=)
Da mesma forma, o operador **= calcula o valor inicial de x elevado ao número que aparece depois dele. O resultado da exponenciação é atribuído ao próprio x:
1x = 2 2x **= 3 # x = 2 ** 3 3print(x) # Saída: 8
Operadores bit a bit
Além dos operadores numéricos, também é possível combinar operadores de atribuição com operações bit a bit, que trabalham com os valores binários. Esses operadores aparecem com menos frequência no dia a dia, então não vamos nos aprofundar neles por enquanto.
O operador walrus (:=)
A partir do Python 3.8, surgiu um novo operador de atribuição chamado operador walrus (:=), que permite atribuir e usar um valor ao mesmo tempo dentro de uma expressão.
Veja os exemplos sem e com o operador :=:
1# sem o operador 2 3frase = "Python é divertido!" 4print(frase) 5 6# Saída: 7# Python é divertido! 8 9 10# com o operador 11 12print(frase := "Python é divertido!") 13 14# Saída: 15# Python é divertido!
1# sem o operador 2 3y = 10 4x = y + 5 5 6print(x, y) 7 8# Saída: 9# 15 10 10 11 12# com o operador 13 14x = (y := 10) + 5 15print(x, y) 16 17# Saída: 18# 15 10
Perceba que frase e y são criadas e usadas na mesma linha quando usamos o operador. Nesse caso, pode não parecer tão diferente, mas conforme você for fazendo operações mais complexas, você vai perceber como ele deixa o código bem mais conciso.
Curiosidade: O nome walrus" (morsa, em inglês) vem do formato do símbolo :=, que lembra os dentes de uma morsa. 🦭