Python >> Tutoriel Python >  >> Python

Python renvoie le tuple de la fonction

Avez-vous besoin de créer une fonction qui renvoie un tuple mais tu ne sais pas comment ? Pas de soucis, dans soixante secondes, vous saurez ! Aller! ?

Une fonction Python peut renvoyer n'importe quel objet tel qu'un tuple. Pour renvoyer un tuple, créez d'abord l'objet tuple dans le corps de la fonction, affectez-le à une variable your_tuple , et renvoyez-le à l'appelant de la fonction en utilisant le mot-clé opération "return your_tuple ".

Par exemple, le code suivant crée une fonction create_tuple() qui ajoute tous les nombres 0, 1, 2, …, 9 au tuple your_tuple , et renvoie le tuple à l'appelant de la fonction :

def create_tuple():
    ''' Function to return tuple '''
    your_tuple = (1, 2, 3, 4, 5, 6, 7, 8, 9)
    return your_tuple

numbers = create_tuple()
print(numbers)
# (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

Notez que vous stockez le tuple résultant dans la variable numbers . La variable locale your_tuple que vous avez créé dans le corps de la fonction n'est visible que dans la fonction mais pas en dehors de celle-ci. Donc, si vous essayez d'accéder au nom your_tuple , Python lèvera un NameError :

>>> print(your_tuple)
Traceback (most recent call last):
  File "C:UsersxcentDesktopcode.py", line 9, in <module>
    print(your_set)
NameError: name 'your_tuple' is not defined

Pour résoudre ce problème, affectez simplement la valeur de retour de la fonction — un tuple — à une nouvelle variable et accédez au contenu de cette nouvelle variable :

>>> numbers = create_tuple()
>>> print(numbers)
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

Alternativement, l'appelant peut utiliser plusieurs affectations pour capturer toutes les valeurs de tuple individuellement comme ceci :

a, b, c, d, e, f, g, h, i = create_tuple()

print(a, b, c, d, e, f, g, h, i)
# 1 2 3 4 5 6 7 8 9

Il existe de nombreuses autres façons de renvoyer un tuple à partir d'une fonction en Python. Par exemple, vous pouvez utiliser une instruction d'expression de générateur à la place qui est beaucoup plus concise que le code précédent, mais crée le même tuple de nombres :

def create_tuple():
    ''' Function to return tuple '''
    return tuple(i for i in range(10))

numbers = create_tuple()
print(numbers)
# (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

Avec les expressions de générateur, vous pouvez créer dynamiquement un tuple en utilisant la syntaxe (expression context) . Vous itérez sur tous les éléments dans un contexte donné "for i in range(10) ", et appliquez une certaine expression, par exemple, l'expression d'identité i , avant d'ajouter les valeurs résultantes au tuple nouvellement créé.

Si vous avez besoin d'en savoir plus sur les expressions du générateur, n'hésitez pas à consulter l'excellente vidéo explicative de Finxter Creator David :

Article connexe : Une introduction simple aux expressions de générateur en Python

Une façon intéressante de renvoyer un tuple à partir d'une fonction consiste à utiliser les fonctions lambda.

Une fonction lambda est une fonction anonyme en Python. Il commence par le mot-clé lambda , suivi d'une liste de zéro ou plusieurs arguments séparés par des virgules, suivis des deux-points et de l'expression de retour. Utilisez le tuple() constructeur pour créer et retourner un objet tuple.

L'extrait de code suivant utilise une combinaison de fonctionnalités.

  • La fonction lambda crée dynamiquement un objet fonction et l'affecte à la variable create_tuple . Vous pouvez ensuite appeler la fonction comme avant avec create_tuple() .
  • L'expression du générateur crée un tuple et le renvoie en même temps dans une seule ligne de code. Elle ne peut pas être plus concise que cela.
create_tuple = lambda : tuple(i for i in range(10))

numbers = create_tuple()
print(numbers)
# (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)