Comment renvoyer plusieurs valeurs à la fois à partir d'une fonction dans Python 3

Aujourd'hui, nous partageons avec vous la traduction d'un article que nous avons trouvé sur medium.com. L'auteur, Vivek Coder, parle des moyens de renvoyer les valeurs d'une fonction en Python et explique comment différentes structures de données peuvent être distinguées les unes des autres.





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 returnet 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, zou (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 typinget 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!



All Articles