
Foto do site Unsplash . Autor: Vipul Jha
Python é conveniente porque permite que você retorne simultaneamente vários valores de uma função de uma vez. Para fazer isso, você precisa usar um operador
return
e retornar uma estrutura de dados com vários valores - por exemplo, uma lista do número total de horas de trabalho para cada semana.
def hours_to_write(happy_hours):
week1 = happy_hours + 2
week2 = happy_hours + 4
week3 = happy_hours + 6
return [week1, week2, week3]
print(hours_to_write(4))
# [6, 8, 10]
As estruturas de dados em Python são usadas para armazenar coleções de dados que podem ser retornadas por uma instrução
return
. Neste artigo, veremos maneiras de retornar vários valores usando estruturas semelhantes (dicionários, listas e tuplas), bem como usando classes e classes de dados (Python 3.7+).
Método 1: retornar valores usando dicionários
Os dicionários contêm combinações de elementos, que são pares de chave / valor (
key:value
), colocados entre chaves ( {}
).
Dicionários, na minha opinião, são a melhor opção para o trabalho se você conhece a chave de acesso aos valores. A seguir está um dicionário onde a chave é o nome da pessoa e o valor correspondente é a idade.
people={
'Robin': 24,
'Odin': 26,
'David': 25
}
Agora, vamos prosseguir para a função que retorna um dicionário com pares de valores-chave.
# A Python program to return multiple values using dictionary
# This function returns a dictionary
def people_age():
d = dict();
d['Jack'] = 30
d['Kim'] = 28
d['Bob'] = 27
return d
d = people_age()
print(d)
# {'Bob': 27, 'Jack': 30, 'Kim': 28}
Método 2: retornar valores usando listas
As listas são semelhantes a arrays formados com colchetes, mas podem conter diferentes tipos de elementos. As listas também são diferentes das tuplas porque são tipos de dados mutáveis. Ou seja, qualquer lista pode mudar .
Listas são uma das estruturas de dados mais versáteis em Python porque não precisam ser uniformes (podem incluir strings, números e elementos). Às vezes, as listas são usadas em conjunto com pilhas ou filas.
# A Python program to return multiple values using list
def test():
str1 = "Happy"
str2 = "Coding"
return [str1, str2];
list = test()
print(list)
# ['Happy', 'Coding']
Aqui está um exemplo que retorna uma lista com números naturais.
def natural_numbers(numbers = []):
for i in range(1, 16):
numbers.append(i)
return numbers
print(natural_numbers())
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
Método 3: retornar valores usando tuplas
Tuplas são objetos imutáveis ordenados em Python que são comumente usados para armazenar coleções de dados heterogêneos.
As tuplas se parecem com listas, mas não podem ser alteradas após terem sido declaradas. Além disso, como regra, tuplas são mais rápidas de trabalhar do que listas. Você pode criar uma tupla separando os itens com vírgulas:
x, y, z
ou (x, y, z)
.
Neste exemplo, uma tupla é usada para armazenar dados sobre um funcionário (nome, experiência profissional em anos e nome da empresa).
Bob = ("Bob", 7, "Google")
E aqui está um exemplo de como escrever uma função para retornar uma tupla.
# A Python program to return multiple values using tuple
# This function returns a tuple
def fun():
str1 = "Happy"
str2 = "Coding"
return str1, str2; # we could also write (str1, str2)
str1, str2= fun()
print(str1)
print(str2)
# Happy
Coding
Observe que omitimos os parênteses na instrução
return
, já que é suficiente simplesmente separar cada elemento com uma vírgula para retornar uma tupla (como mostrado acima).
Não se esqueça de que você pode criar uma tupla usando uma vírgula em vez de parênteses. Os parênteses são necessários apenas quando tuplas vazias são usadas ou você precisa evitar imprecisão sintática.
Para uma melhor compreensão das tuplas, consulte a documentação oficial do Python 3 (a documentação está em inglês - ed. ).
Abaixo está um exemplo de uma função que usa parênteses para retornar uma tupla.
def student(name, class):
return (name, class)
print(student("Brayan", 10))
# ('Brayan', 10)
Novamente, tuplas são fáceis de confundir com listas (afinal, ambas são um contêiner de elementos). No entanto, há uma diferença fundamental a ser lembrada: tuplas não podem ser alteradas, mas listas, sim.
Método 4: retornar valores usando objetos
Tudo é igual aqui como em C / C ++ ou Java. Você pode simplesmente formar uma classe (chamada de estrutura em C) para armazenar várias características e retornar um objeto da classe.
# A Python program to return multiple values using class
class Intro:
def __init__(self):
self.str1 = "hello"
self.str2 = "world"
# This function returns an object of Intro
def message():
return Intro()
x = message()
print(x.str1)
print(x.str2)
# hello
world
Método 5: retornando valores usando classes de dados (Python 3.7+)
As classes de dados no Python 3.7+ ajudam a retornar uma classe com métodos exclusivos adicionados automaticamente, um módulo
typing
e outras ferramentas úteis.
from dataclasses import dataclass
@dataclass
class Item_list:
name: str
perunit_cost: float
quantity_available: int = 0
def total_cost(self) -> float:
return self.perunit_cost * self.quantity_available
book = Item_list("better programming.", 50, 2)
x = book.total_cost()
print(x)
print(book)
# 100
Item_list(name='better programming.', perunit_cost=50,
quantity_available=2)
Para uma melhor compreensão das classes de dados, consulte a documentação oficial do Python 3 (a documentação está em inglês - ed. ).
Resultado
O objetivo deste artigo é familiarizá-lo com as maneiras de retornar vários valores de uma função em Python. E, como você pode ver, existem muitas dessas maneiras.
Aprenda material e desenvolva constantemente suas habilidades de programação. Obrigado pela atenção!