W3docs

Introdução aos Operadores Python

Aprenda todos os tipos de operadores Python — aritméticos, de comparação, atribuição, lógicos, bit a bit, identidade e pertencimento — com exemplos e regras de precedência.

Operadores são os símbolos e palavras-chave que dizem ao Python qual ação executar em um ou mais valores. Toda expressão Python significativa — de x + 1 a if age >= 18 — depende de pelo menos um operador. Python agrupa seus operadores em sete categorias: aritméticos, de comparação, de atribuição, lógicos, de identidade, de pertencimento e bit a bit. Este capítulo explica cada categoria, mostra quando usá-la e destaca armadilhas comuns.

Operadores Aritméticos

Operadores aritméticos realizam cálculos matemáticos. Python disponibiliza sete deles:

OperadorNomeExemploResultado
+Adição17 + 522
-Subtração17 - 512
*Multiplicação17 * 585
/Divisão17 / 53.4
%Módulo (resto)17 % 52
**Exponenciação2 ** 8256
//Divisão inteira17 // 53

Dois operadores merecem atenção especial:

  • / sempre retorna um float no Python 3, mesmo ao dividir dois inteiros (4 / 2 retorna 2.0, não 2).
  • // (divisão inteira) arredonda o resultado em direção ao infinito negativo, não em direção ao zero. Portanto, -7 // 2 é -4, não -3.
python— editable, runs on the server

Uso comum: verificar par ou ímpar

O operador módulo (%) é a maneira padrão de testar divisibilidade:

number = 42
if number % 2 == 0:
    print("even")
else:
    print("odd")
# Output: even

Operadores de Comparação

Operadores de comparação comparam dois valores e sempre retornam True ou False. Eles são usados em condições, laços while e em qualquer lugar onde um resultado booleano seja necessário.

OperadorSignificadoExemploResultado
==Igual a5 == 5True
!=Diferente de5 != 3True
>Maior que5 > 3True
<Menor que5 < 3False
>=Maior ou igual a5 >= 5True
<=Menor ou igual a5 <= 4False
python— editable, runs on the server

Encadeamento de comparações

Python permite encadear múltiplas comparações em uma única expressão, o que é lido de forma mais natural do que na maioria das outras linguagens:

x = 7
print(1 < x < 10)   # True  — equivalent to (1 < x) and (x < 10)
print(0 < x < 5)    # False

Armadilha: == vs =

= é o operador de atribuição; == testa igualdade. Usar = dentro de uma condição é um SyntaxError em Python (ao contrário de algumas outras linguagens onde a atribuição ocorre silenciosamente).

Operadores de Atribuição

Operadores de atribuição armazenam valores em variáveis. As formas compostas (+=, -=, …) combinam uma operação aritmética ou bit a bit com a atribuição, tornando o código mais conciso.

OperadorEquivalente aExemplo
=x = 10
+=x = x + nx += 3
-=x = x - nx -= 3
*=x = x * nx *= 3
/=x = x / nx /= 3
//=x = x // nx //= 3
%=x = x % nx %= 3
**=x = x ** nx **= 3
&=x = x & nx &= 0b1111
|=x = x | nx |= 0b1000
^=x = x ^ nx ^= 0b0101
<<=x = x << nx <<= 1
>>=x = x >> nx >>= 1
python— editable, runs on the server

O operador walrus := (Python 3.8+)

O operador walrus atribui um valor dentro de uma expressão. É útil quando você quer avaliar e armazenar um resultado sem escrever a expressão duas vezes:

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# Without walrus: compute length twice
if len(numbers) > 5:
    print(f"Long list: {len(numbers)} items")

# With walrus: assign once, use in condition and body
if (n := len(numbers)) > 5:
    print(f"Long list: {n} items")
# Output: Long list: 10 items

Operadores Lógicos

Operadores lógicos combinam ou invertem expressões booleanas. Python usa palavras-chave em inglês em vez de símbolos (&&, ||, !).

OperadorSignificadoExemploResultado
andVerdadeiro se ambos os lados forem verdadeirosTrue and FalseFalse
orVerdadeiro se pelo menos um lado for verdadeiroTrue or FalseTrue
notInverte o valor booleanonot TrueFalse
python— editable, runs on the server

Avaliação de curto-circuito

Python avalia and e or de forma lazy (da esquerda para a direita) e para assim que o resultado é determinado:

  • False and <anything> — o lado direito nunca é avaliado.
  • True or <anything> — o lado direito nunca é avaliado.

Isso importa quando o lado direito tem um efeito colateral ou pode gerar um erro:

user_input = ""
name = user_input or "Anonymous"
print(name)   # Anonymous  (empty string is falsy, so "Anonymous" is returned)

Valores truthy e falsy

Operadores lógicos funcionam com qualquer valor, não apenas True/False. Python trata 0, "", None, [], {} e () como falsy; todo o resto é truthy.

Consulte o capítulo Python Data Types para uma lista completa de valores falsy por tipo.

Operadores de Identidade

Operadores de identidade testam se duas variáveis apontam para o mesmo objeto na memória, não apenas se contêm valores iguais.

OperadorSignificado
isTrue se ambas as variáveis referenciam o mesmo objeto
is notTrue se referenciam objetos diferentes
python— editable, runs on the server

Quando usar is vs ==

Use is apenas quando você intencionalmente quer verificar a identidade do objeto — mais comumente ao comparar com singletons:

value = None
if value is None:       # correct idiom
    print("No value provided")

# Never do: if value == None — works but is considered bad style

Python armazena em cache inteiros pequenos (tipicamente de -5 a 256) e strings internadas, portanto a is b pode retornar True para dois inteiros pequenos criados separadamente. Nunca confie nesse comportamento para inteiros ou strings — use == para igualdade de valores.

Operadores de Pertencimento

Operadores de pertencimento testam se um valor existe dentro de uma sequência (lista, tupla, string, conjunto ou dicionário).

OperadorSignificado
inTrue se o valor for encontrado na sequência
not inTrue se o valor não for encontrado
python— editable, runs on the server

Nota sobre desempenho

Para listas e tuplas, in verifica cada elemento sequencialmente (O(n)). Para conjuntos e chaves de dicionário, in usa uma tabela hash e executa em tempo constante (O(1)). Prefira um set quando precisar realizar muitos testes de pertencimento em uma coleção grande.

Operadores Bit a Bit

Operadores bit a bit trabalham sobre a representação binária dos inteiros, manipulando bits individuais.

OperadorNomeExemploResultadoNotas
&AND5 & 31O bit é 1 somente se ambos os bits forem 1
|OR5 | 37O bit é 1 se qualquer bit for 1
^XOR5 ^ 36O bit é 1 se os bits forem diferentes
~NOT~5-6Inverte todos os bits; resultado é -(n+1)
<<Deslocamento à esquerda5 << 110Desloca bits para a esquerda (multiplica por 2)
>>Deslocamento à direita20 >> 25Desloca bits para a direita (divide por 2)
python— editable, runs on the server

Por que os operadores bit a bit importam

Na maioria do código Python cotidiano, você não usará operadores bit a bit diretamente, mas eles aparecem com frequência em:

  • Flags e permissões — combinando bitmasks para representar múltiplas opções em um único inteiro.
  • Criptografia e hashing — XOR é um bloco de construção básico.
  • Matemática eficienten << 1 é mais rápido que n * 2 em laços de alto desempenho.
  • Trabalho com protocolos binários — análise de pacotes de rede ou cabeçalhos de arquivo.

Precedência de Operadores

Quando uma expressão mistura vários operadores, Python os avalia em uma ordem fixa (maior precedência primeiro):

PrioridadeOperadores
1 (maior)**
2+x, -x, ~x (unário)
3*, /, //, %
4+, -
5<<, >>
6&
7^
8|
9==, !=, <, >, <=, >=, is, is not, in, not in
10not
11and
12 (menor)or
# Multiplication before addition (standard math rules apply)
print(2 + 3 * 4)      # 14, not 20

# Use parentheses to override
print((2 + 3) * 4)    # 20

# ** is right-associative: 2 ** 3 ** 2 = 2 ** (3**2) = 2**9
print(2 ** 3 ** 2)    # 512, not 64

# Comparisons before logical operators
print(2 + 3 > 4 and 10 % 3 == 1)  # True and True → True

Em caso de dúvida, use parênteses. Eles tornam a precedência explícita e melhoram a legibilidade.

Resumo

CategoriaOperadoresUso principal
Aritméticos+ - * / % ** //Cálculos matemáticos
Comparação== != > < >= <=Condições, filtragem
Atribuição= += -= *= /= //= %= **= &= |= ^= <<= >>=Armazenar e atualizar variáveis
Lógicosand or notCombinar condições booleanas
Identidadeis is notVerificação de singletons (ex.: is None)
Pertencimentoin not inPesquisar sequências e conjuntos
Bit a bit& | ^ ~ << >>Flags binárias, dados de baixo nível

Para tópicos relacionados, consulte Python Variables, Python If...Else e Python Data Types.

Prática

Prática
Which of the following categories does Python operators fall into?
Which of the following categories does Python operators fall into?
Was this page helpful?