Skip to content

Comment retourner plusieurs valeurs à partir d’une fonction en Python ?

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'>