Pular para o conteúdo

Como retornar valores no Python?

[

O retorno no Python: Uso e Melhores Práticas

O comando return no Python é um componente fundamental das funções. Ele permite que você retorne objetos do Python para o código que chamou a função. Esses objetos são conhecidos como o valor de retorno da função e podem ser usados para realizar outras computações em seu programa.

Usar o comando return de forma eficaz é uma habilidade essencial se você deseja escrever funções personalizadas que sejam Pythonicas e robustas.

Neste tutorial, você aprenderá:

  • Como usar o comando return no Python em funções
  • Como retornar valores únicos ou múltiplos em suas funções
  • Quais são as melhores práticas ao usar o return

Introdução às Funções no Python

A maioria das linguagens de programação permite que você atribua um nome a um bloco de código que realiza uma determinada computação. Esses blocos de código nomeados podem ser reutilizados rapidamente, porque você pode usar o nome deles para chamá-los de diferentes lugares do seu código.

Programadores chamam esses blocos de código nomeados de sub-rotinas, rotinas, procedimentos ou funções dependendo da linguagem de programação que estão utilizando. No Python, eles são conhecidos como funções.

As funções são elementos fundamentais em Python e fornecem um alto nível de reutilização de código, modularidade e clareza. Elas permitem que você agrupe uma sequência de comandos relacionados em um único bloco, o que torna seu código mais organizado e mais fácil de manter.

Entendendo o Comando return no Python

O comando return é usado dentro de uma função para especificar o valor de retorno dessa função. Quando você chama uma função que contém um comando return, a função é executada até que o comando return seja encontrado. Quando isso acontece, o valor especificado no return é retornado para o código que chamou a função.

Existem dois tipos de comando return no Python: o comando return explícito e o comando return implícito.

Comandos return Explícitos

Um comando return explícito é usado para retornar um valor e encerrar a execução da função imediatamente. Um comando return explícito pode estar acompanhado de uma expressão que calcula o valor a ser retornado. Aqui está um exemplo de uma função simples que retorna a soma de dois números:

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

Nesse exemplo, a função soma(a, b) retorna a soma dos argumentos a e b. Após o comando return, a função é encerrada e a execução retorna para o código que a chamou.

Comandos return Implícitos

Um comando return implícito permite que uma função retorne um valor de forma implícita, sem usar a palavra-chave return. Isso pode acontecer quando uma função alcança o final do seu código sem encontrar nenhum comando return. Nesse caso, a função retorna automaticamente None. Veja um exemplo:

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

Nesse exemplo, a função saudacao(nome) imprime uma saudação para o nome especificado, mas não contém um comando return. Portanto, ao chamar essa função, ela imprimirá a saudação, mas retornará None implicitamente.

Retornando Valores vs Imprimindo Valores

É importante distinguir entre retornar valores de uma função e imprimir valores em uma função. O comando return é usado para retornar um valor específico para o código que chamou a função, permitindo que esse valor seja usado em outras partes do programa.

Por outro lado, a função print() é usada para exibir valores na saída do seu programa, geralmente no console ou no terminal. A função print() não retorna nenhum valor que possa ser usado posteriormente, ela apenas exibe o valor no momento da execução da função.

Vejamos um exemplo para ilustrar a diferença entre retornar valores e imprimir valores em uma função:

def soma(a, b):
return a + b
def exibe_soma(a, b):
print(a + b)

Nesse exemplo, a função soma(a, b) retorna a soma dos argumentos a e b, enquanto a função exibe_soma(a, b) imprime a soma dos argumentos a e b usando a função print(). Ao chamar essas funções, você obterá resultados diferentes:

resultado = soma(2, 3)
print(resultado) # Output: 5
exibe_soma(2, 3) # Output: 5

No primeiro caso, o resultado da função soma(2, 3) é atribuído à variável resultado e, em seguida, é impresso na saída do programa. No segundo caso, a função exibe_soma(2, 3) imprime diretamente o resultado na saída do programa.

É importante entender essa diferença e decidir se você precisa retornar um valor específico para ser usado posteriormente ou apenas exibir um valor sem precisar dele mais tarde no programa.

Retornando Múltiplos Valores

Além de retornar um único valor, o Python também permite que você retorne múltiplos valores de uma função. Isso pode ser útil em situações em que você precisa retornar várias informações relacionadas de uma só vez.

Para retornar múltiplos valores de uma função, você pode separá-los por vírgulas após o comando return. Ao chamar a função, você pode atribuir cada um dos valores retornados a variáveis separadas.

Aqui está um exemplo de uma função que retorna o quadrado e o cubo de um número:

def calcula_potencias(x):
return x**2, x**3
quadrado, cubo = calcula_potencias(2)
print(quadrado) # Output: 4
print(cubo) # Output: 8

Nesse exemplo, a função calcula_potencias(x) retorna o quadrado e o cubo do número x. Ao chamar a função e atribuir os valores retornados às variáveis quadrado e cubo, podemos imprimir cada um dos valores separadamente.

Ao retornar múltiplos valores de uma função, é importante lembrar que você precisa atribuir os valores a um número igual de variáveis. Caso contrário, você receberá uma mensagem de erro.

Melhores Práticas ao Usar o Comando return

Agora que você sabe como usar o comando return no Python, vamos discutir algumas melhores práticas ao utilizá-lo em suas funções:

Retornar None de forma Explícita

Em algumas situações, você pode querer que sua função não retorne nenhum valor significativo. Nesses casos, é uma boa prática usar o comando return com a palavra-chave None para indicar que você está retornando um valor vazio ou nulo de forma explícita. Isso torna o seu código mais claro e evita ambiguidades.

def funcao_vazia():
return None

Não é estritamente necessário usar o comando return com None, pois uma função sem comando return implícito retornará automaticamente None. No entanto, especificar o return None de forma explícita é preferível por razões de legibilidade do código.

Lembrar o Valor de Retorno

Ao chamar uma função que retorna um valor, é uma boa prática lembrar e atribuir o valor de retorno a uma variável. Isso permite que você use esse valor posteriormente em seu programa.

resultado = funcao_com_retorno()
# faça algo com o resultado

Ao atribuir o valor de retorno a uma variável, dê a ela um nome que seja descritivo e significativo, para que outras pessoas que leiam seu código possam entender facilmente o propósito dessa variável.

Evitar Expressões Complexas

Quando estiver usando o comando return, tente evitar a criação de expressões complexas que dificultem a leitura do código. Em vez disso, divida a expressão em etapas menores e use variáveis intermediárias para armazenar os valores intermediários. Isso torna seu código mais legível e mais fácil de entender.

# Evite expressões complexas
def funcao_computacao_complexa():
return (a + b) / (c - d) * e
# Prefira expressões simplificadas
def funcao_computacao_simplificada():
soma = a + b
diferenca = c - d
produto = soma / diferenca
resultado = produto * e
return resultado

Ao dividir a expressão complexa em etapas menores, você facilita a leitura e a manutenção do código. Além disso, se você precisar fazer alterações em partes específicas da expressão, será muito mais fácil encontrar e atualizar o código correspondente.

Retornar Valores vs Modificar Variáveis Globais

Ao escrever funções em Python, é uma boa prática retornar valores explícitos em vez de modificar variáveis globais dentro da função. Modificar variáveis globais pode tornar seu código mais difícil de entender e depurar.

Se você precisa que uma função altere o valor de uma variável, é recomendável passar a variável como argumento para a função e depois retornar o valor resultante. Isso torna o fluxo de dados no seu programa mais explícito e facilita o rastreamento de possíveis efeitos colaterais.

valor_global = 0
# Evite modificar uma variável global dentro da função
def funcao_modificacao_global():
global valor_global
valor_global = 10
# Prefira retornar valores explícitos
def funcao_com_retorno():
return 10
valor_global = funcao_com_retorno()

Nesse exemplo, a função funcao_modificacao_global() modifica diretamente o valor da variável global valor_global. Por outro lado, a função funcao_com_retorno() retorna explicitamente o valor 10, que pode ser atribuído à variável global valor_global fora da função.

Ao retornar valores em vez de modificar variáveis globais, seu código se torna mais modular e mais fácil de testar e manter.

Usar return com Condicional

Uma prática comum é usar o comando return em conjunto com uma estrutura condicional para retornar um valor com base em uma condição específica. Isso pode ser útil quando você deseja retornar diferentes valores, dependendo de determinadas situações.

def funcao_condicional(valor):
if valor > 0:
return "Valor positivo"
elif valor < 0:
return "Valor negativo"
else:
return "Valor zero"

Nesse exemplo, a função funcao_condicional(valor) verifica se o valor é maior que zero, igual a zero ou menor que zero e retorna uma string que representa essa condição.

Usar o comando return com uma estrutura condicional torna seu código mais legível e mais claro em relação às diferentes possibilidades de retorno da função.

Usar Loops com Curto-Circuito

Os loops com curto-circuito são uma técnica útil para interromper a execução de um loop quando uma condição específica é atendida. Você pode usar o comando return em conjunto com um loop para interromper a execução da função antecipadamente.

def funcao_com_curto_circuito(lista):
for item in lista:
if item == 0:
return "Valor encontrado"
return "Valor não encontrado"

Nesse exemplo, a função funcao_com_curto_circuito(lista) verifica se um valor igual a zero está presente na lista. Se algum valor zero for encontrado, a função interrompe a execução e retorna a string “Valor encontrado”. Caso contrário, a função retorna a string “Valor não encontrado”.

Usar loops com curto-circuito permite economizar tempo de execução do seu programa, evitando a necessidade de percorrer todos os itens de uma lista ou de realizar mais iterações do que o necessário.

Reconhecer Código Morto

O comando return pode interromper a execução de uma função antecipadamente. Portanto, qualquer código que venha após um comando return não será executado. É importante reconhecer qualquer código morto presente após um comando return e removê-lo para evitar confusões futuras.

def funcao_com_codigo_morto():
return "Valor retornado"
print("Esta linha não será executada")

Nesse exemplo, a função funcao_com_codigo_morto() retorna a string “Valor retornado”, mas a linha de código print("Esta linha não será executada") não será executada. Isso ocorre porque o comando return interrompe a execução da função antecipadamente.

Ao revisar seu código, verifique se há qualquer código morto presente após um comando return e remova-o para evitar possíveis erros ou comportamentos indesejados.

Retornar Múltiplos Objetos Nomeados

Além de retornar múltiplos valores, o Python também permite que você retorne múltiplos objetos nomeados em uma função. Isso pode ser útil quando você deseja retornar várias informações relacionadas como um único pacote.

Para retornar múltiplos objetos nomeados, você pode utilizar a própria estrutura de dicionários do Python. Basta retornar um dicionário onde cada chave é o nome do objeto retornado e cada valor é o valor correspondente.

def funcao_com_multiplos_objetos():
return {
'nome': 'João',
'idade': 30,
'profissao': 'Engenheiro'
}

Nesse exemplo, a função funcao_com_multiplos_objetos() retorna um dicionário com informações pessoais de uma pessoa. Ao chamar essa função, você pode atribuir o dicionário retornado a uma variável e acessar os objetos individualmente.

pessoa = funcao_com_multiplos_objetos()
print(pessoa['nome']) # Output: João
print(pessoa['idade']) # Output: 30
print(pessoa['profissao']) # Output: Engenheiro

Retornar múltiplos objetos nomeados permite que você estruture melhor suas informações e facilite o acesso a cada uma delas em outros locais do seu programa.

Conclusão

Neste tutorial, você aprendeu o uso e as melhores práticas do comando return no Python. Ele é fundamental para retornar valores de uma função e permitir que esses valores sejam usados em outras partes do seu código.

Ao aplicar as melhores práticas mencionadas, você poderá escrever funções mais legíveis, modularizadas e eficientes em Python. Isso tornará seu código mais fácil de entender, manter e depurar.

Agora é hora de aplicar esses conceitos e aprimorar suas habilidades em Python utilizando o comando return de forma eficaz. Experimente escrever suas próprias funções e veja como elas melhoram a qualidade e a eficiência do seu código.