
Cet article décrit comment renvoyer plusieurs valeurs à partir d’une fonction en Python.
- Renvoie plusieurs valeurs à l’aide de virgules
- Liste de retour
Consultez l’article suivant pour les bases des fonctions en Python.
Renvoie plusieurs valeurs à l’aide de virgules
En Python, vous pouvez renvoyer plusieurs valeurs en les renvoyant simplement séparées par des virgules.
Par exemple, définissez une fonction qui renvoie une chaîne et un entier comme suit :
def test():
return 'abc', 100
En Python, les valeurs séparées par des virgules sont considérées comme des tuples sans parenthèses, sauf si la syntaxe l’exige. Pour cette raison, la fonction dans l’exemple ci-dessus renvoie un tuple avec chaque valeur comme élément.
Notez que c’est en fait la virgule qui fait un tuple, pas les parenthèses. Les parenthèses sont facultatives, sauf dans le cas d’un tuple vide, ou lorsqu’elles sont nécessaires pour éviter toute ambiguïté syntaxique.
Types intégrés – Tuples — documentation Python 3.7.4
result = test()
print(result)
print(type(result))
# ('abc', 100)
# <class 'tuple'>
Chaque élément a un type défini dans la fonction.
print(result[0])
print(type(result[0]))
# abc
# <class 'str'>
print(result[1])
print(type(result[1]))
# 100
# <class 'int'>
Bien sûr, spécifier un index qui dépasse le nombre de valeurs de retour définies génère une erreur.
# print(result[2])
# IndexError: tuple index out of range
Vous pouvez décompresser et attribuer plusieurs valeurs de retour à différentes variables.
a, b = test()
print(a)
# abc
print(b)
# 100
Idem pour trois valeurs de retour ou plus.
def test2():
return 'abc', 100, [0, 1, 2]
a, b, c = test2()
print(a)
# abc
print(b)
# 100
print(c)
# [0, 1, 2]
Liste de retour
L’utilisation de [] renvoie la liste au lieu de tuple.
def test_list():
return ['abc', 100]
result = test_list()
print(result)
print(type(result))
# ['abc', 100]
# <class 'list'>