Menu

Operadores em Python: aritméticos, comparação, lógicos, pertinência e identidade

Um passeio completo pelos operadores do Python — aritméticos, de comparação, lógicos, de atribuição, de pertinência e de identidade — com exemplos de cada.

Operadores são só símbolos para ações

Um operador é um símbolo (ou palavra curta) que diz ao Python para fazer algo com um ou dois valores — somar, comparar, checar se um contém o outro. Você já conhece alguns da matemática básica; o Python tem mais um punhado para lógica, continência e identidade.

Vamos percorrer as categorias principais uma de cada vez.

Operadores aritméticos

Os operadores matemáticos padrão, mais algumas especialidades do Python:

main.py
Output
Click Run to see the output here.

Duas partes dessa lista são fáceis de esquecer:

  • / retorna float mesmo quando os dois lados são inteiros. 10 / 2 te dá 5.0. Para divisão inteira, use //.
  • % é módulo. n % 2 == 0 é o jeito mais limpo de testar se n é par.

O Python segue a precedência matemática padrão: ** se liga mais forte do que * e /, que se ligam mais forte do que + e -. Parênteses sobrescrevem tudo:

main.py
Output
Click Run to see the output here.

Use parênteses com generosidade quando houver qualquer dúvida. Não custam nada e tornam a intenção óbvia.

Operadores de comparação

Seis comparações, cada uma retornando um booleano:

main.py
Output
Click Run to see the output here.

O Python permite encadear comparações, o que é incomum e útil:

main.py
Output
Click Run to see the output here.

Isso se lê "age tem pelo menos 18 e menos de 65". Por baixo dos panos equivale a 18 <= age and age < 65, mas lê mais como matemática.

Operadores lógicos

Escritos como palavras em inglês, não símbolos:

main.py
Output
Click Run to see the output here.

Dois detalhes que valem saber:

Avaliação em curto-circuito. and para no primeiro valor falsy; or para no primeiro valor truthy. O lado direito nem é avaliado se o esquerdo já decide a resposta. Isso permite se proteger contra erros com segurança:

main.py
Output
Click Run to see the output here.

and/or retornam o valor, nem sempre True/False. Eles retornam o operando que decidiu o resultado:

main.py
Output
Click Run to see the output here.

Você vai ver name = user_input or "anonymous" em código de verdade — esse é um padrão de valor default construído nesse comportamento.

Operadores de atribuição

= atribui. As formas compostas combinam uma operação com atribuição:

main.py
Output
Click Run to see the output here.

As formas compostas também funcionam para strings (s += "more") e listas (lst += [4, 5]). Não são mais rápidas que escrever a forma completa; só são mais curtas.

Pertinência: in e not in

Testa se um valor aparece dentro de um container:

main.py
Output
Click Run to see the output here.

in funciona em qualquer iterável — listas, tuplas, sets, strings, dicionários e mais. Para buscas grandes, in numa lista é O(n); in num set ou dict é O(1). Isso importa quando você está checando pertinência muitas vezes.

Identidade: is e is not

is verifica se duas variáveis apontam para o mesmo objeto na memória, não só valores iguais:

main.py
Output
Click Run to see the output here.

Quase sempre você quer ==. O único lugar onde is realmente brilha é checando contra None, True e False:

main.py
Output
Click Run to see the output here.

A convenção da comunidade é firme: is None, não == None. Idem para is True (embora você raramente precise disso).

Operadores bitwise (pule na primeira leitura)

O Python também tem operadores bitwise — &, |, ^, ~, <<, >> — para manipular bits individuais de um inteiro. São úteis em criptografia, rede de baixo nível e certos algoritmos. Você pode ignorar com segurança numa primeira passada.

O operador walrus (:=)

O Python 3.8 adicionou :=, que atribui e retorna um valor numa expressão só. Útil em condições onde você quer capturar e testar um resultado:

main.py
Output
Click Run to see the output here.

Sem o walrus, você chamaria len(numbers) duas vezes ou adicionaria uma linha extra. Não é essencial; use onde reduz repetição.

Folha de cola da precedência de operadores

Ligação mais forte para mais fraca entre os operadores que você de fato vai usar:

  1. ** — exponenciação
  2. *, /, //, % — multiplicação e divisão
  3. +, - — adição e subtração
  4. <, <=, >, >=, ==, != — comparações
  5. not
  6. and
  7. or

Na dúvida, coloque parênteses. Clareza vence espertinho.

Entrando em controle de fluxo

Com operadores no bolso, você pode escrever condições. A próxima página é if/elif/else — a construção que deixa seu programa seguir um caminho ou outro dependendo do que os operadores dizem.

Perguntas frequentes

Quais são os principais tipos de operadores em Python?

Aritméticos (+, -, *, /, //, %, **), de comparação (==, !=, <, <=, >, >=), lógicos (and, or, not), de atribuição (=, +=, -=, …), de pertinência (in, not in) e de identidade (is, is not).

Qual a diferença entre == e is em Python?

== verifica se dois valores são iguais. is verifica se duas variáveis se referem ao mesmo objeto na memória. Para None, True e False, use is — esses são singletons. Para todo o resto, == quase sempre é o que você quer.

O que o operador % faz em Python?

Para números, % é o operador módulo — retorna o resto de uma divisão. 17 % 5 é 2. Para strings, é uma sintaxe antiga de formatação (como "hello %s" % name), mas f-strings substituíram quase completamente.

Aprenda a programar com o Coddy

COMEÇAR