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:
Duas partes dessa lista são fáceis de esquecer:
/retorna float mesmo quando os dois lados são inteiros.10 / 2te dá5.0. Para divisão inteira, use//.%é módulo.n % 2 == 0é o jeito mais limpo de testar sené 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:
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:
O Python permite encadear comparações, o que é incomum e útil:
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:
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:
and/or retornam o valor, nem sempre True/False. Eles retornam o operando que decidiu o resultado:
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:
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:
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:
Quase sempre você quer ==. O único lugar onde is realmente brilha é checando contra None, True e False:
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:
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:
**— exponenciação*,/,//,%— multiplicação e divisão+,-— adição e subtração<,<=,>,>=,==,!=— comparaçõesnotandor
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.