Pular para o conteúdo principal
InicioTutoriaisPython

Operadores em Python

Este tutorial aborda os diferentes tipos de operadores em Python, sobrecarga de operadores, precedência e associatividade.
abr. de 2024  · 9 min leer

Assim como na matemática, as linguagens de programação como Python têm operadores. Você pode pensar nelas como funções extremamente simples que estão na base da ciência da computação. Essas são as operações mais simples às quais um programa de computador pode ser reduzido. Eles são conhecimentos essenciais para qualquer aspirante a cientista de dados ou engenheiro de software.

Neste tutorial, você aprenderá sobre

Se você quiser saber mais sobre os fundamentos da linguagem de programação Python, não deixe de conferir nosso curso gratuito Intro to Python for Data Science.

Operadores aritméticos

É provável que você já esteja familiarizado com elas, já que vêm da matemática básica.

Os operadores aritméticos são: adição (+), subtração (-), multiplicação (*), divisão (/), expoente (**), divisão de piso (//) e módulo (%). As quatro primeiras são bastante simples: adição, subtração, multiplicação e divisão, e você provavelmente já está familiarizado com elas.

# Addition
print(5 + 2)

# Subtraction
print(5 - 2)

# Multiplication
print(5 * 2)

# Division
print(5 / 2)
7
3
10
2.5

Os outros três são um pouco mais complicados. O operador de expoente significa "elevado à potência de". Por exemplo, 2 ** 3 significa que 2 é multiplicado por ele mesmo 3 vezes, portanto 2 ** 3 é igual a 2 * 2 * 2, que é igual a 8.

A divisão por piso é igual à divisão normal, exceto pelo fato de que o resultado é sempre arredondado para o final. No exemplo abaixo, 5 é dividido por 2, resultando em 2,5. Mas como se trata da divisão do piso, 2,5 é arredondado para 2.

Por fim, o módulo é o restante após a divisão. No caso de 5%2, o número 2 só cabe duas vezes em 5, o que significa que o restante é 1.

# Exponent
print(5 ** 2)
# This is the same as 5 * 5

# Floor Division
print(5 // 2)

# Modulus
print(5 % 2)
25
2
1

Em Python, o operador de adição também pode ser usado para concatenar cadeias de caracteres. Isso significa que eles serão reunidos em uma única string, por exemplo:

firstName = "Théo"

introduction = "Hi, my name is " + firstName + "."

print(introduction)
Hi, my name is Théo.

Operadores de atribuição

Se você tem alguma experiência em programação, certamente já usou operadores de atribuição antes. Eles atribuem um determinado valor a uma variável. O mais usado é o =. Para usá-lo, basta digitar o nome da variável à qual você deseja atribuir um novo valor, o endereço = e o valor que deseja atribuir. Por exemplo, se quiser atribuir o valor 100 à variável balance, você pode fazer o seguinte:

balance = 100
print(balance)
100

Se quiser incrementar o valor de balance com 10, você pode usar balance += 10. Isso é equivalente a balance = balance + 10, mas é muito mais curto.

balance += 10
print(balance)
110

O mesmo se aplica a -=, balance -= 10 é o mesmo que balance = balance - 10:

print(balance)
balance -= 10
print(balance)
110
100

Os outros operadores de atribuição funcionam exatamente da mesma forma. São elas:

  • *=
  • /=
  • **=
  • //=
  • %=

Operadores de comparação

Você pode usar operadores de comparação para, como você adivinhou, comparar os valores das variáveis. Eles sempre retornarão um valor booleano, que é True ou False. Há seis deles:

  • Equal: ==
  • Não é igual: !=
  • Maior que: >
  • Menos de: <
  • Maior que ou igual: >=
  • Menor ou igual: <=

Aqui estão alguns exemplos de comparações:

a = 3
b = 5

print(a == b) # Equal
print(a != b) # Not equal
print(a > b) # Greater than
print(a < b) # Less than
print(a >= b) # Greater than or equal to
print(a <= b) # Less than or equal to
False
True
False
True
False
True

== e != também podem ser usados para comparar cadeias de caracteres em vez de números. Os outros operadores não são compatíveis com cadeias de caracteres, pois uma cadeia de caracteres não pode ser realmente maior que outra cadeia de caracteres.

print("Hello" == "World")
print("Python" != "R")
False
True

Operadores lógicos

Talvez você já esteja familiarizado com eles! Na lógica, eles são chamados de conectivos lógicos. Eles também são amplamente usados na linguagem humana. São eles: and, or e not.

and só retornará True se ambos os operandos (os dois objetos booleanos que você está comparando) forem True. Por exemplo:

print(True and True)
print(True and False)
print(False and False)
True
False
False

Para entender o comportamento desse operador lógico, você pode usar uma tabela-verdade:

a b a e b
Verdadeiro Verdadeiro Verdadeiro
Verdadeiro Falso Falso
Falso Verdadeiro Falso
Falso Falso Falso

or é True, sempre que qualquer operando (um ou mais) for True.

print(True and True)
print(True and False)
True
False
a b a ou b
Verdadeiro Verdadeiro Verdadeiro
Verdadeiro Falso Verdadeiro
Falso Verdadeiro Verdadeiro
Falso Falso Falso

Observe que eles também funcionam com mais de dois operandos, por exemplo:

print(True and True and True and True)
print(True and True and True and False)
print(False or False or False or False)
print(False or False or False or True)
True
False
False
True

not retornará o oposto de seu operando, portanto, True se False for fornecido e vice-versa.

print(not True)
False
a não um
Verdadeiro Falso
Falso Verdadeiro

Sobrecarga do operador

Lembre-se de que, anteriormente, você viu como o + pode ser usado para somar números, mas que ele também pode ser usado para concatenar ou combinar cadeias de caracteres. Portanto, o + funciona de forma diferente, dependendo do tipo de objeto em que você o utiliza. Mas esse nem sempre será o caso. Às vezes, o operador com o qual você está trabalhando simplesmente não é compatível com o tipo de objeto no qual você deseja usá-lo.

Veja um exemplo. Digamos que você tenha dois objetos Dog, ozzy e filou. Eles pertencem à classe Dog abaixo. Você pode pensar na classe como um projeto de como os objetos devem ser e como devem se comportar. Nesse caso, os objetos Dog têm um nome, idade e altura. Depois que a classe é definida, você pode instanciar objetos. Um deles é o Ozzy, com 3 anos de idade e 30 centímetros de altura. O outro é Filou, ele tem 5 anos e 65 centímetros de altura.

Este exemplo usa o conceito de programação orientada a objetos. Se quiser saber mais sobre isso, não deixe de ler nosso tutorial sobre Programação orientada a objetos em Python

Digamos que você queira comparar os dois cães com o sinal de maior que: >. Isso não funcionará. Você receberá um erro dizendo '>' not supported between instances of 'Dog' and 'Dog'. Isso significa que o site > não sabe como comparar objetos da classe Dog.

class Dog:

    def __init__(self, name, age, height):  
        self.name = name
        self.age = age
        self.height = height

ozzy = Dog("Ozzy", 3, 30)
filou = Dog("Filou", 5, 65)

print(filou > ozzy)
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-96-428069ab24cc> in <module>()
      9 filou = Dog("Filou", 5, 65)
     10
---> 11 print(filou > ozzy)


TypeError: '>' not supported between instances of 'Dog' and 'Dog'

Felizmente, com a sobrecarga de operador, você pode definir o comportamento do operador para quando ele for chamado nos objetos Dog. Nesse caso, um método chamado __gt__, que significa "maior que", deve ser definido, recebendo dois argumentos. Como queremos comparar nossos cães com base em sua altura, o método retorna self.height > other.height.

class Dog:

    def __init__(self, name, age, height):  
        self.name = name
        self.age = age
        self.height = height

    def __gt__(self,other):
        return self.height > other.height

ozzy = Dog("Ozzy", 3, 30)
filou = Dog("Filou", 5, 65)

print(filou > ozzy)
print(ozzy > filou)
True
False

Precedência

Quando você está combinando vários operadores, as coisas podem ficar confusas. Dê uma olhada no exemplo abaixo:

a = 2
b = 3
c = 9

a ** b > 5 and c - a // b >= 9 or b ** 2 == c
True

Como você sabe qual deles será executado primeiro? Como você deve ler uma linha de código com muitos desses símbolos? Ele é executado da esquerda para a direita ou há alguma ordem específica?

É aqui que entra a precedência. Os operadores Python são executados em uma ordem muito específica, e alguns têm prioridade sobre outros.

Na tabela a seguir, você pode ver a precedência dos operadores, na ordem de cima para baixo. Essas regras são as mesmas da matemática, em que determinados cálculos em uma fórmula precisam ser realizados antes de outros.

Precedência Operador Descrição
1 ** expoente
2 *, /, %, // multiplicar, dividir, módulo, divisão por piso
3 +, - plus, minus
4 >, <, >=, <= comparison
5 ==, != igualdade
6 = %= /= //= -= += *= **= atribuição
7 e, ou, não lógico

Associatividade

Você viu que a precedência é importante! Mas e as que estão no mesmo nível de precedência, como multiplicação e divisão? Eles são executados ao mesmo tempo? No. *, \, % e \\ são executados da esquerda para a direita, enquanto ** é executado da direita para a esquerda. Isso é chamado de associatividade.

Dê uma olhada no exemplo a seguir. Nesse caso, os operadores serão executados da esquerda para a direita, e o resultado será 3.

print(5 * 2 // 3)
3

Ao adicionar parênteses, no entanto, você pode alterar a ordem em que os operadores são executados. Isso é associatividade, que funciona da mesma forma que a associatividade em matemática. O que estiver entre parênteses será calculado primeiro. Nesse caso, a divisão do piso será realizada primeiro, seguida pela multiplicação.

print(5 * (2 // 3))

Conclusão

Agora você sabe o que são operadores, como deve usá-los e como eles funcionam. Você também aprendeu sobre sobrecarga, precedência e associatividade. Você está no caminho certo para se tornar um mestre em Python! Se você quiser aprender ainda mais, não hesite em conferir nosso curso Python Intermediário para Ciência de Dados.

Temas

Cursos de Python

Course

Introduction to Data Science in Python

4 hr
456.6K
Dive into data science using Python and learn how to effectively analyze and visualize your data. No coding experience or skills needed.
See DetailsRight Arrow
Start Course
Veja MaisRight Arrow
Relacionado

tutorial

Programação orientada a objetos em Python (OOP): Tutorial

Aborde os fundamentos da programação orientada a objetos (OOP) em Python: explore classes, objetos, métodos de instância, atributos e muito mais!
Théo Vanderheyden's photo

Théo Vanderheyden

12 min

tutorial

Tutorial de conjuntos e teoria de conjuntos em Python

Aprenda sobre os conjuntos do Python: o que são, como criá-los, quando usá-los, funções incorporadas e sua relação com as operações da teoria dos conjuntos.
DataCamp Team's photo

DataCamp Team

13 min

tutorial

Tutorial de strings em Python

Neste tutorial, você aprenderá tudo sobre as cadeias de caracteres do Python: fatiamento e encadeamento, manipulação e formatação com a classe Formatter, cadeias de caracteres f, modelos e muito mais!
Sejal Jaiswal's photo

Sejal Jaiswal

16 min

tutorial

Função do sublinhado (_) no tutorial de Python

Neste tutorial, você aprenderá sobre os usos do sublinhado (_) em python.
Hafeezul Kareem Shaik's photo

Hafeezul Kareem Shaik

8 min

tutorial

Tutorial de iteradores e geradores Python

Explore a diferença entre Iteradores e Geradores do Python e saiba quais são os melhores para usar em várias situações.
Kurtis Pykes 's photo

Kurtis Pykes

10 min

tutorial

Tutorial de Python

Em Python, tudo é objeto. Números, cadeias de caracteres (strings), DataFrames, e até mesmo funções são objetos. Especificamente, qualquer coisa que você usa no Python tem uma classe, um modelo associado por trás.
DataCamp Team's photo

DataCamp Team

3 min

See MoreSee More