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 umreturnsem valor), ela retornaNoneautomaticamente.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 eavaliar_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
returnfaz a função devolver um valor para quem a chamou — diferente doprint(), que apenas exibe o valor na tela sem guardá-lo. - Uma função sem
return(ou comreturnsem valor) retornaNoneautomaticamente. - O
returnencerra 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
returnpermitem construir sistemas em etapas, onde cada função faz uma coisa e passa o resultado adiante.