Cómo devolver varios valores a la vez desde una función en Python 3

Hoy compartimos con ustedes una traducción de un artículo que encontramos en medium.com. El autor, Vivek Coder, habla sobre formas de devolver valores de una función en Python y explica cómo se pueden distinguir diferentes estructuras de datos entre sí.





Foto del sitio web de Unsplash . Autor: Vipul Jha



Python es conveniente porque le permite devolver simultáneamente varios valores de una función a la vez. Para hacer esto, debe usar un operador returny devolver una estructura de datos con varios valores, por ejemplo, una lista del número total de horas de trabajo 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]


Las estructuras de datos en Python se utilizan para almacenar colecciones de datos que pueden ser devueltos por una declaración return. En este artículo, veremos formas de devolver múltiples valores usando estructuras similares (diccionarios, listas y tuplas), así como también usando clases y clases de datos (Python 3.7+).



Método 1: devolver valores usando diccionarios



Los diccionarios contienen combinaciones de elementos, que son pares clave-valor ( key:value), encerrados entre llaves ( {}).



Los diccionarios, en mi opinión, son la mejor opción para el trabajo si conoces la clave para acceder a los valores. El siguiente es un diccionario donde la clave es el nombre de la persona y el valor correspondiente es la edad.



people={
  'Robin': 24,
  'Odin': 26,
  'David': 25
}


Ahora pasemos a la función que devuelve un diccionario con pares clave-valor.



# 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: devolver valores usando listas



Las listas son similares a las matrices formadas con corchetes, pero pueden contener diferentes tipos de elementos. Las listas también son diferentes de las tuplas porque son tipos de datos mutables. Es decir, cualquier lista puede cambiar .



Las listas son una de las estructuras de datos más versátiles en Python porque no tienen que ser uniformes (pueden incluir cadenas, números y elementos). A veces, las listas incluso se utilizan junto con pilas o colas.



# A Python program to return multiple values using list
 
def test(): 
    str1 = "Happy"
    str2 = "Coding"
    return [str1, str2];
 
list = test() 
print(list)
# ['Happy', 'Coding']


A continuación se muestra un ejemplo que devuelve una lista con números naturales.



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: devolver valores usando tuplas



Las tuplas son objetos inmutables ordenados en Python que se usan comúnmente para almacenar colecciones de datos heterogéneos.



Las tuplas se parecen a las listas, pero no se pueden cambiar una vez declaradas. Además, por regla general, las tuplas funcionan más rápido que las listas. Puede crear una tupla separando los elementos con comas: x, y, zo (x, y, z).



En este ejemplo, una tupla se utiliza para almacenar datos sobre un empleado (nombre, experiencia laboral en años y nombre de la empresa).



Bob = ("Bob", 7, "Google")


Y aquí hay un ejemplo de cómo escribir una función para devolver una 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


Tenga en cuenta que hemos omitido los paréntesis en la declaración return, ya que es suficiente simplemente separar cada elemento con una coma para devolver una tupla (como se muestra arriba).



No olvide que puede crear una tupla usando una coma en lugar de paréntesis. Los paréntesis solo son necesarios cuando se utilizan tuplas vacías o si necesita evitar la imprecisión sintáctica.



Para una mejor comprensión de las tuplas, consulte la documentación oficial de Python 3 (la documentación está en inglés - Ed. ).



A continuación se muestra un ejemplo de una función que usa paréntesis para devolver una tupla.



def student(name, class):
   return (name, class)
print(student("Brayan", 10))
# ('Brayan', 10)


Nuevamente, las tuplas son fáciles de confundir con listas (después de todo, ambas son un contenedor de elementos). Sin embargo, hay una diferencia fundamental a tener en cuenta: las tuplas no se pueden cambiar, pero las listas sí.



Método 4: devolver valores usando objetos



Aquí todo es igual que en C / C ++ o Java. Simplemente puede formar una clase (llamada estructura en C) para almacenar múltiples rasgos y devolver un objeto de la clase.



# 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: devolver valores usando clases de datos (Python 3.7+)



Las clases de datos en Python 3.7+ ayudan a devolver una clase con métodos únicos agregados automáticamente, un módulo typingy otras herramientas útiles.



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 una mejor comprensión de las clases de datos, consulte la documentación oficial de Python 3 (la documentación está en inglés - Ed. ).



Salida



El propósito de este artículo es familiarizarlo con las formas de devolver múltiples valores de una función en Python. Y, como puede ver, existen muchas de estas formas.



Aprenda material y desarrolle constantemente sus habilidades de programación. ¡Gracias por su atención!



All Articles