Retornando valores

Aprenda a usar return para devolver um resultado ao restante do programa.

Até agora, nossas funções executavam tarefas e exibiam resultados diretamente na tela com print(). Mas existe uma forma muito mais poderosa de trabalhar com funções: fazer com que elas devolvam um resultado para quem as chamou.

É exatamente isso que a palavra return faz.

A diferença entre imprimir e retornar

Esse é um dos pontos que mais gera confusão em quem está aprendendo e é totalmente normal. Vamos esclarecer de uma vez por todas com uma analogia.

Pense em um funcionário de uma loja:

  • Um funcionário que usa print() é como alguém que fala em voz alta o resultado do cálculo para você ouvir, mas o valor vai embora com o som. Você não tem nada nas mãos.
  • Um funcionário que usa return é como alguém que te entrega um recibo impresso com o resultado. Você pode guardar, somar com outro valor, mostrar em outro lugar, ou fazer o que quiser com ele.
# Usando print — exibe o resultado, mas não devolve nada
def dobrar_com_print(numero):
   print(numero * 2)

# Usando return — devolve o resultado para quem chamou
def dobrar_com_return(numero):
   return numero * 2

A diferença real aparece quando tentamos usar o resultado:

# Com print: o resultado é exibido, mas não pode ser guardado
resultado = dobrar_com_print(5)
print(resultado)   # Mostra: None (a função não devolveu nada!)

# Com return: o resultado é devolvido e pode ser guardado
resultado = dobrar_com_return(5)
print(resultado)   # Mostra: 10

Quando uma função não tem return (ou tem um return sem valor), ela retorna None automaticamente. None é a forma do Python dizer "não tenho nada para te dar".

Como usar o return

A sintaxe é simples: escreva return seguido do valor que você quer devolver.

def calcular_area_retangulo(largura, altura):
   area = largura * altura
   return area

# O valor retornado pode ser guardado em uma variável
area_sala = calcular_area_retangulo(5, 3)
print("Área da sala:", area_sala, "m²")  # Mostra: Área da sala: 15 m²

Você também pode retornar a expressão diretamente, sem criar uma variável intermediária:

def calcular_area_retangulo(largura, altura):
   return largura * altura  # Retorna o resultado direto

O return encerra a função

Uma coisa importante: quando o Python encontra um return, ele para a execução da função imediatamente e devolve o valor. Qualquer código escrito depois do return dentro da mesma função será ignorado.

def verificar_maioridade(idade):
   if idade >= 18:
       return "Maior de idade"
   return "Menor de idade"

resultado = verificar_maioridade(20)
print(resultado)  # Mostra: Maior de idade

resultado = verificar_maioridade(15)
print(resultado)  # Mostra: Menor de idade

Repare que não precisamos de else aqui: se o primeiro return for executado, a função para. O segundo return só é alcançado se a condição do if for falsa.

Usando o valor retornado

O valor retornado por uma função pode ser usado de diversas formas e é aqui que as funções se tornam peças de uma engrenagem maior.

Guardando em uma variável

def calcular_imc(peso, altura):
   return peso / (altura ** 2)

imc = calcular_imc(70, 1.75)
print(f"Seu IMC é: {imc:.1f}")  # Mostra: Seu IMC é: 22.9

Usando diretamente no print

def dobrar(numero):
   return numero * 2

print(dobrar(3))  # Mostra: 6

Utilizando para realizar outros cálculos

def calcular_desconto(preco, percentual):
   return preco * (percentual / 100)

preco_original = 250
desconto = calcular_desconto(preco_original, 20)
preco_final = preco_original - desconto

print(f"Desconto: R$ {desconto:.2f}") # Mostra: Desconto: R$ 50.00
print(f"Preço final: R$ {preco_final:.2f}") # Mostra: Preço final: R$ 200.00

Exemplo prático: mini sistema de notas

Vamos criar um exemplo completo que usa return para construir um pequeno sistema que avalia a situação de um aluno:

def calcular_media(nota1, nota2, nota3):
   return (nota1 + nota2 + nota3) / 3

def avaliar_situacao(media):
   if media >= 7:
       return "Aprovado"
   elif media >= 5:
       return "Recuperação"
   else:
       return "Reprovado"

# Coletando as notas
print("=== Sistema de Notas ===")
n1 = float(input("Digite a nota 1: "))
n2 = float(input("Digite a nota 2: "))
n3 = float(input("Digite a nota 3: "))

# Usando as funções em conjunto
media = calcular_media(n1, n2, n3)
situacao = avaliar_situacao(media)

print(f"Média: {media:.1f}")
print(f"Situação: {situacao}")

Exemplo de execução:

=== Sistema de Notas ===
Digite a nota 1: 8
Digite a nota 2: 6
Digite a nota 3: 7

Média: 7.0
Situação: Aprovado

Perceba como calcular_media() retorna a média e avaliar_situacao() retorna o texto da situação. Cada função faz uma coisa só e devolve seu resultado. É o programa principal quem junta tudo. Esse é um sinal de código bem organizado!

O que aprendemos nesta lição

Nesta lição, você aprendeu que:

  • O return faz a função devolver um valor para quem a chamou — diferente do print(), que apenas exibe o valor na tela sem guardá-lo.
  • Uma função sem return (ou com return sem valor) retorna None automaticamente.
  • O return encerra a execução da função imediatamente — nenhum código depois dele será executado.
  • O valor retornado pode ser guardado em variáveis, usado em expressões ou passado como argumento para outras funções.
  • Funções com return permitem construir sistemas em etapas, onde cada função faz uma coisa e passa o resultado adiante.