Módulo 13 - Funções

Retorno com return: a função que devolve resultado

10 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 01/07/2026

O que você vai aprender

  • Usar return para devolver o resultado de um cálculo.
  • Guardar o valor retornado em uma variável e reutilizá-lo.
  • Saber que função sem return devolve None.
  • Entender que o return encerra a função imediatamente.

Devolvendo o resultado para quem chamou

As funções que você criou até aqui mostram coisas na tela, mas não entregam nada de volta ao programa. Compare com a função len, que você usa desde cedo: ela não imprime o tamanho do texto; ela devolve o tamanho, e você decide o que fazer com ele, guardar, comparar, somar. Essa devolução é o trabalho do return. Quando o Python executa um return, a função termina e o valor indicado viaja de volta para o ponto da chamada. A chamada inteira passa a valer aquele valor, como se o Python a substituísse pelo resultado.

def somar(a, b):
    return a + b

resultado = somar(2, 3)
print(resultado)
print(somar(10, 5) + 100)

# 5
# 115

A chamada somar(2, 3) vale 5. Por isso dá para guardar em variável e usar em contas.

Olhe a última linha do exemplo com atenção, porque ela mostra o poder do return: somar(10, 5) vale 15, então a expressão inteira vale 115. O resultado de uma função com return é uma peça que se encaixa em qualquer lugar onde um valor caberia: dentro de outra conta, dentro de um if, dentro de outra chamada de função. Funções que só imprimem não têm essa flexibilidade, e essa diferença é o assunto central da próxima aula.

Sem return, a função devolve None

E o que acontece quando a função termina sem nenhum return? O Python não deixa a chamada valer nada no vácuo: ele devolve o valor especial None, que representa a ausência de valor. É o jeito da linguagem dizer esta função não tinha nada para entregar. As funções das aulas anteriores, como saudar e imprimir_cabecalho, devolvem None em toda chamada, e você nunca percebeu porque nunca tentou guardar o retorno delas.

def saudar(nome):
    print(f"Olá, {nome}!")

valor = saudar("Maria")
print(valor)

# Olá, Maria!
# None

A saudação aparece porque o print dentro da função rodou. Mas o retorno guardado é None.

Leia a saída com calma, porque tem duas coisas acontecendo. A primeira linha, Olá, Maria!, veio do print de dentro da função, que executou normalmente. A segunda linha, None, é o conteúdo da variável valor: como saudar não tem return, a chamada devolveu None, e foi isso que ficou guardado. Nenhum erro em lugar nenhum, e é justamente por rodar sem erro que esse comportamento confunde. Guarde este exemplo: ele é a semente do erro clássico que a próxima aula vai desmontar por completo.

NoneType
O tipo do valor None. Se uma conta quebrar com a mensagem unsupported operand type NoneType, é sinal de que um None entrou na conta, quase sempre vindo de uma função sem return.

return encerra a função na hora

Última peça do quebra-cabeça: o return não é só devolução, é também ponto final. Quando ele executa, a função acaba naquele instante, e qualquer linha abaixo dele, dentro da função, simplesmente não roda. Isso parece detalhe, mas vira ferramenta: combinado com o if do módulo 7, o return permite que a função responda cedo em um caso e continue em outro.

def classificar(numero):
    if numero < 0:
        return "negativo"
    return "positivo ou zero"

print(classificar(-5))
print(classificar(12))

# negativo
# positivo ou zero

Se o primeiro return executa, o segundo nem é lido. Cada chamada sai por uma porta.

Siga o fluxo de classificar(-5): a condição é verdadeira, o primeiro return dispara, a função devolve negativo e termina ali. O segundo return nunca acontece nessa chamada. Já em classificar(12), a condição é falsa, o corpo do if é pulado e a execução desce até o segundo return. Esse padrão de múltiplos returns, um por caso, aparece na função verificar_aprovacao da prática deste módulo e em todo código Python profissional. Uma consequência direta: colocar código depois de um return incondicional é escrever linhas mortas, que nunca executam.

Teste rápido

Uma função executa um print e termina sem return. O que a variável x = minha_funcao() guarda?

Perguntas frequentes

Qual é a diferença entre return e print?
print mostra um valor na tela para o humano ler; return entrega o valor para o programa usar. São canais diferentes: um vai para os olhos, o outro vai para o código. A próxima aula é inteira sobre essa diferença, que é a mais importante do módulo.
Uma função pode ter mais de um return?
Pode, e é comum: um return por caminho do if, como na função classificar da aula. Em cada chamada, só um deles executa, porque o primeiro return alcançado encerra a função. Vários returns com condições claras costumam deixar a função mais legível que um único return no fim.
O return pode devolver mais de um valor?
Pode: return media, situacao devolve os dois de uma vez, e quem chama recebe com media, situacao = calcular(). Por baixo dos panos, o Python empacota os valores numa tupla, aquela do módulo 11. Neste curso básico quase sempre devolvemos um valor só, que cobre a grande maioria dos casos.
Posso usar return fora de uma função?
Não. O return só faz sentido dentro de um corpo de função, porque a tarefa dele é devolver algo para quem chamou. Usado solto no programa, o Python interrompe com SyntaxError: 'return' outside function, uma das mensagens mais diretas da linguagem.
return sozinho, sem valor nenhum, serve para quê?
Serve para encerrar a função naquele ponto, devolvendo None. É útil em saídas antecipadas: se um dado inválido chega, a função para ali e não executa o resto. É o equivalente educado de dizer não tenho resposta para isso.
Como sei se uma função pronta do Python devolve algo ou só mostra?
Consulte a documentação oficial ou faça o teste da variável: guarde o resultado e imprima. len e input devolvem valores; print devolve None (ele mostra, não entrega). Com o tempo você decora as mais comuns, e o teste da variável resolve as outras em dez segundos.

Fontes

Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.