Mandar um café pro programador

Pode me ajudar a transformar cafeína em código?

Return em Funções no Python - Como Retornar um Valor em uma Função

Neste tutorial, vamos aprender um dos assuntos mais importantes em funções: o comando return, muitíssimo utilizado em programação Python.


Tutorial anterior: Constante Global
Leia também: Como ser um programador profissional

Comando return - O que é? Para que serve?

No início de nossa seção de Função em Python, explicamos que uma função tem dois propósitos básicos:
  1. Fazer tarefas específicas (de preferência, da maneira mais clara e concisa o possível)
  2. Se comunicar com outras partes do programa





Já fizemos funções com as duas coisas. No caso da 'comunicação', aprendemos a usar parâmetros e argumentos, assim vimos que é possível enviarmos informações para dentro de uma função.

Ou seja, é como se a função agora pudesse ter contato com o que existe fora de seu escopo, pois pode receber informação.

Mas algo está faltando aí, veja se você descobre...

As funções devem se comunicar.
Já aprendemos como elas recebem informações.

Mas pra uma comunicação completa, além de receber, ela precisa retornar informação.

Ele recebe dados de fora da função, mas não vimos funções enviando dados para fora da função.

E é aí que entra a keyword return.
Ela serve para a função retornar algum valor!

Vamos ver como fazer isso.

Como usar return em uma Função no Python

A declaração de uma função que tem o comando de return é:

def nome_funcao(parâmetros):
    código
    código
    código
    ...
    return algo

A única coisa nova e diferente, é a última linha da função:
return algo




'algo' pode ser qualquer variável, número, expressão, objeto etc.
Esse 'algo' vai ser retornado para onde a função foi invocada.

Vamos ver um exercício resolvido e comentado para entender melhor.

Exemplo de uso de return

Crie um programa em Python que tenha a função soma(x,y) que recebe dois números e retorna o valor da soma deles.

Uma função que recebe dois números e calcula a soma, você já sabe fazer.
A única diferença é que vamos dar um return nesse valor da soma,.

E se estamos retornando algo, alguma coisa precisa receber esse retorno.
Quem vai 'receber' o 'return' será a variável res.

Veja como fica nosso código:

def soma(x,y):
    result = x+y
    return result

a = int(input("Primeiro numero: "))
b = int(input("Segundo numero : "))
res = soma(a,b)
print("Soma: ", res)


A função retorna a soma x+y, armazenada na variável result, ou seja, retorna um número.
Esse número, armazenamos na variável res, depois simplesmente imprimimos essa variável.

Se quisermos, podemos usar direto a função soma(x,y) dentro do print e encurtar ainda mais a função soma():

def soma(x,y):
    return (x+y)

a = int(input("Primeiro numero: "))
b = int(input("Segundo numero : "))
print("Soma: ", soma(a,b))

Usamos return x+y pois, como dissemos, podemos retornar uma expressão diretamente, sem necessitar criar uma variável dentro da função.




Exemplo de uso de return com Strings

Crie um programa em Python que peça o nome e o sobrenome de uma pessoa, depois exiba na tela a mensagem "Olá sobrenome, nome".

Ou seja, ele inverte a ordem do nome e sobrenome.
Vamos criar a função inverte, que recebe duas strings.
Dentro dessa função, criamos uma nova string a nomeInverso, que é criada a partir do parâmetro sobrenome, uma vírgula e o parâmetro nome.

Retornamos essa nova string.

Já o código que chama essa função, vai receber o retorno dela e armazenar na variável invertido, em seguida imprimimos essa variável, veja como fica:

def inverte(nome, sobrenome):
    nomeInverso = sobrenome+","+nome
    return nomeInverso

nome = input("Nome: ")
sobrenome = input("Sobrenome: ")
invertido = inverte(nome,sobrenome)

print("Olá", invertido)

Exemplos de return com Booleanos

Crie um programa em Python que diz se o número inserido pelo usuário é par ou ímpar. Ele deve fazer isso através de uma função que recebe o inteiro e retorna True ou False.

Vamos chamar nossa função de par(x), ela recebe um número como argumento.

Dentro dela, usamos um teste condicional IF ELSE:
Se o resto da divisão de x por 2 for 0, ele é par
Senão, é impar

Se for verdadeiro, damos um return True.
Se for falso, fazemos return False.

Veja que nessa função dois return, mas somente um será executado, dependendo se x é par ou ímpar.

Na parte principal de nosso script, vamos usar outro teste condicional IF ELSE. O teste de condição é simplesmente par(num), onde num é um número que o usuário vai digitar.

Como essa função retorna sempre um valor Booleano (valor lógico), podemos usar a chamada de inversão diretamente no teste do IF.

Se o número for par, essa chamada vai retornar True e o IF será executado, printando uma mensagem dizendo que o número é par.

Se for falsa, o IF não roda então vai pro ELSE, que roda, printando uma string dizendo que é ímpar.

Nosso código ficou assim:

def par(x):
    if (x%2)==0:
        return True
    else:
        return False

while True:
    num = int(input("Insira um número: "))
    if par(num):
        print("É par")
    else:
        print("É ímpar")

Como retornar mais de um valor

Diferente da maioria das outras linguagens, onde só é possível retornar um valor, ou seja, apenas uma coisa, seja lá o que for, no Python podemos retornar várias variáveis, objetos, expressões etc.

Para isso, basta separar cada informação por vírgula.

Por exemplo, o script abaixo tem uma função de cadastro.
Ela pergunta primeiro seu nome, depois sua idade.
Então, retorna esses dados:
return name, age

Quem chamou essa função, tem que estar preparado para receber essas duas informações:
nome, idade = cadastro()

A variável nome vai receber o primeiro valor retornado, que é name, e a variável idade vai receber o segundo valor retornado da função, que é age.

Veja como ficou nosso código:


def cadastro():
    name = input("Qual seu nome: ")
    age   = int(input("Idade: ") )

    return name, age

print("Iniciando cadastro...")
nome, idade = cadastro()

print("Cadastro realizado com sucesso:")
print("Seu nome é", nome, "e você tem", idade,"anos de idade.")

É importante notar o objetivo dessa função cadastro().
Sempre que você quiser fazer um cadastro, basta chamar essa função, que ela vai perguntar as coisas e retornar as informações importantes.

Você só faz chamar, e depois já tem os dados nas variáveis nome e idade. Obviamente, é um exemplo simples, mas imagine numa grande empresa, onde você foi encarregado de contratar um novo programador.

Alguns dados pessoais, como salário, não são da sua conta.
Então você simplesmente chama uma função lá da tesouraria e ela fica encarregada dessa parte financeira.

Se você tá programando um jogo e está responsável pela parte artística, não tem que se preocupar com a parte de lógica...tipo, a velocidade com que seu carro se movimenta, isso uma outra galera vai fazer, você só vai usar as funções deles:
  • acelerar()
  • frear()
  • trocar_marcha()

O que acontece lá dentro? Sei lá! O código lá dentro é de outra pessoa, você só precisa saber que parâmetros a função pede e o que ela vai retornar, para poder usar uma função.

Interessante esse return, não é mesmo?
Agora sim nossas funções estão interessantes!

Elas recebem dados, fazem tarefas específicas e retornam informações.
Quem chama uma função, não precisa saber o que se passa dentro dela, o importante é fornecer os dados necessários (argumentos) e saber que tipo de informação vai receber (return).

7 comentários:

  1. mt obg nem precisei ler mt apenas bati o olho no cod e lembrei

    ResponderExcluir
  2. Como faço para nao retornar NONE quando não quiser?

    ResponderExcluir
  3. eu tenho uma dúvida, Porque eu queria retornar um for inteiro , tipo todo um sistema for , por exemplo ,
    lista = [1,2,3,4]
    for c in lista:
    print(c)


    ai eu queria retorna isso, mas como poderia fazer?
    ja tentei fazer assim :
    return (for c in lista: print(c))
    mas não funcionou

    ResponderExcluir
  4. Tenho essa dúvida....
    Crie uma função chamada inteiro(texto) que recebe, como parâmetros, um texto a ser convertido em inteiro. A função deve retornar um inteiro representado pelo texto, ou None caso não seja possível. Você não pode usar a função int de Python. Implemente a sua.

    Chamada: inteiro(“15”)
    Saída: a função retorna 15.

    Chamada: inteiro(“-3”)
    Saída: a função retorna -3.

    Chamada: inteiro(“-a”)
    Saída: a função retorna None.

    ResponderExcluir
  5. Como faço para chamar dois valores de outras duas funções e usar estes dois valores em uma terceira função?

    ResponderExcluir

Bora fazer evoluir o ensino da Programação no Brasil ?

Que tal apoiar e fazer crescer o ensino da programação no Brasil ?

Ajudar nosso país a crescer e se desenvolver cada vez mais, tecnologicamente?

Clica abaixo pra saber mais!

Apoiar o Projeto Progressivo