Como retornar vários valores ao mesmo tempo de uma função em Python 3

Hoje estamos compartilhando com você a tradução de um artigo que encontramos no medium.com. O autor, Vivek Coder, fala sobre maneiras de retornar valores de uma função em Python e explica como diferentes estruturas de dados podem ser distinguidas umas das outras.





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 returne 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, zou (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 typinge 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!



All Articles