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 aveccreate_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)