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
return
y 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, z
o (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
typing
y 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!