sábado, 5 de dezembro de 2020

Retornando vários valores em Python

Em Python, podemos retornar vários valores de uma função. A seguir estão maneiras diferentes:

Usando Object: É semelhante a C / C++ e Java, podemos criar uma classe (em C, struct) para conter vários valores e retornar um objeto da classe.

# Um programa Python para retornar vários
# valores de um método usando classe
class Teste:
    def __init__(self):
        self.str = "Acervo Lima"
        self.x = 20

# Essa função retorna um objeto da classe Teste
def fun():
    return Teste() 
 
t = fun()
print(t.str)
print(t.x)

Resultado:

Acervo Lima
20

Usando Tupla: Uma Tupla é uma sequência de itens separados por vírgulas. Ele é criado com ou sem (). As tuplas são imutáveis.

# Um programa Python para retornar vários
# valores de um método usando tupla

# Esta função retorna uma tupla
def fun():
    str = "Acervo Lima"
    x = 20

    return str, x;

str, x = fun()
print(str)
print(x) 

Resultado:

Acervo Lima
20

Usando uma lista: uma lista é como um conjunto de itens criados com colchetes. Eles são diferentes dos arrays, pois podem conter itens de diferentes tipos. As listas são diferentes das tuplas porque são mutáveis.

# Um programa Python para retornar vários
# valores de um método usando lista

# Esta função retorna uma lista
def fun():
    str = "Acervo Lima"
    x = 20

    return [str, x];

list = fun()
print(list)

Resultado:

['Acervo Lima', 20]

Usando um Dicionário: Um Dicionário é semelhante ao hash ou mapa em outras línguas.

# Um programa Python para retornar vários
# valores de um método usando dicionário

# Esta função retorna um dicionário
def fun():
    d = dict();
    d['str'] = "Acervo Lima"
    d['x'] = 20

    return d

d = fun()
print(d)

Resultado:

{'str': 'Acervo Lima', 'x': 20}

Usando a classe de dados (Python 3.7+): No Python 3.7 e superior, a classe de dados pode ser usada para retornar uma classe com métodos exclusivos adicionados automaticamente. O módulo Data Class tem um decorador e funções para adicionar automaticamente métodos especiais gerados, como __init__() e __repr__() nas classes definidas pelo usuário.

from dataclasses import dataclass

@dataclass
class Book_list:
    name: str
    perunit_cost: float
    quantity_available: int = 0

    # Função para calcular o preço total
    def total_cost(self) -> float:
        return self.perunit_cost * self.quantity_available

book = Book_list("Introduction to programming.", 300, 3)
x = book.total_cost()

# mostra o preço total do livro
print(x)

# imprime os detalhes do livro
print(book)

# 900
Book_list(
    name='Python programming.',
    perunit_cost=200,
    quantity_available=3
)

Resultado:

900
Book_list(name='Introduction to programming.', perunit_cost=300, quantity_available=3)

Referência: How do I return multiple values from a function?

Artigo escrito por Shubham Agrawal e traduzido por Acervo Lima de Returning Multiple Values in Python

0 comentários:

Postar um comentário