Photo du site Unsplash . Auteur: Vipul Jha
Python est pratique en ce sens qu'il vous permet de renvoyer simultanément plusieurs valeurs d'une fonction à la fois. Pour ce faire, vous devez utiliser un opérateur
return
et renvoyer une structure de données avec plusieurs valeurs - par exemple, une liste du nombre total d'heures de travail pour chaque semaine.
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]
Les structures de données en Python sont utilisées pour stocker des collections de données qui peuvent être renvoyées par une instruction
return
. Dans cet article, nous examinerons les moyens de renvoyer plusieurs valeurs en utilisant des structures similaires (dictionnaires, listes et tuples), ainsi qu'en utilisant des classes et des classes de données (Python 3.7+).
Méthode 1: renvoyer des valeurs à l'aide de dictionnaires
Les dictionnaires contiennent des combinaisons d'éléments, qui sont des paires clé-valeur (
key:value
), entre accolades ( {}
).
Les dictionnaires, à mon avis, sont la meilleure option pour le travail si vous connaissez la clé pour accéder aux valeurs. Ce qui suit est un dictionnaire où la clé est le nom de la personne et la valeur correspondante est l'âge.
people={
'Robin': 24,
'Odin': 26,
'David': 25
}
Passons maintenant à la fonction qui renvoie un dictionnaire avec des paires clé-valeur.
# 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éthode 2: renvoyer des valeurs à l'aide de listes
Les listes sont similaires aux tableaux formés à l'aide de crochets, mais elles peuvent contenir différents types d'éléments. Les listes sont également différentes des tuples car ce sont des types de données modifiables. Autrement dit, n'importe quelle liste peut changer .
Les listes sont l'une des structures de données les plus polyvalentes de Python car elles n'ont pas besoin d'être uniformes (elles peuvent inclure des chaînes, des nombres et des éléments). Parfois, les listes sont même utilisées avec des piles ou des files d'attente.
# A Python program to return multiple values using list
def test():
str1 = "Happy"
str2 = "Coding"
return [str1, str2];
list = test()
print(list)
# ['Happy', 'Coding']
Voici un exemple qui renvoie une liste avec des nombres naturels.
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éthode 3: renvoyer des valeurs à l'aide de tuples
Les tuples sont des objets immuables ordonnés en Python qui sont couramment utilisés pour stocker des collections de données hétérogènes.
Les tuples sont comme des listes, mais ils ne peuvent pas être modifiés après avoir été déclarés. Et, en règle générale, les tuples sont plus rapides au travail que les listes. Vous pouvez créer un tuple en séparant les éléments par des virgules:
x, y, z
ou (x, y, z)
.
Dans cet exemple, un tuple est utilisé pour stocker des données sur un employé (nom, expérience de travail en années et nom de l'entreprise).
Bob = ("Bob", 7, "Google")
Et voici un exemple d'écriture d'une fonction pour renvoyer un tuple.
# 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
Notez que nous avons omis les parenthèses dans l'instruction
return
, car il suffit de séparer simplement chaque élément par une virgule pour renvoyer un tuple (comme indiqué ci-dessus).
N'oubliez pas que vous pouvez créer un tuple en utilisant une virgule au lieu de parenthèses. Les parenthèses ne sont requises que lorsque des tuples vides sont utilisés ou que vous devez éviter toute imprécision syntaxique.
Pour une meilleure compréhension des tuples, reportez-vous à la documentation officielle de Python 3 (la documentation est en anglais - Ed. ).
Vous trouverez ci-dessous un exemple de fonction qui utilise des parenthèses pour renvoyer un tuple.
def student(name, class):
return (name, class)
print(student("Brayan", 10))
# ('Brayan', 10)
Encore une fois, les tuples sont faciles à confondre avec les listes (après tout, les deux sont un conteneur d'éléments). Cependant, il y a une différence fondamentale à garder à l'esprit: les tuples ne peuvent pas être modifiés, mais les listes le peuvent.
Méthode 4: renvoyer des valeurs à l'aide d'objets
Tout est le même ici qu'en C / C ++ ou Java. Vous pouvez simplement former une classe (appelée structure en C) pour stocker plusieurs traits et renvoyer un objet de la 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éthode 5: renvoyer des valeurs à l'aide de classes de données (Python 3.7+)
Les classes de données dans Python 3.7+ aident à renvoyer une classe avec des méthodes uniques ajoutées automatiquement, un module
typing
et d'autres outils utiles.
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)
Pour une meilleure compréhension des classes de données, reportez-vous à la documentation officielle de Python 3 (la documentation est en anglais - Ed. ).
Production
Le but de cet article est de vous familiariser avec les moyens de renvoyer plusieurs valeurs à partir d'une fonction en Python. Et, comme vous pouvez le voir, il existe vraiment plusieurs de ces façons.
Apprenez du matériel et développez constamment vos compétences en programmation. Merci de votre attention!