1
votes

Quel est le type de retour de la fonction lambda en python?

Lorsque vous créez un lambda en Python, quel type est retourné? Par exemple. type (lambda x: x + 1) renvoie


8 commentaires

Il renvoie quel que soit votre propre code pour tester qu'il renvoie? Qu'est-ce qui vous empêche d'exécuter cela?


Le type de x + 1


name = lambda : est identique à def name (): return


Vous pouvez penser que lambda est comme une fonction abrégée. Par exemple, lambda x: x + 1 est comme def ma_fonction (x): return x + 1 Donc, le type de votre lambda est le type de x + 1


f = lambda x: x + 1; print type (f) renvoie


Comme pour les autres objets appelables, le type renvoyé par une fonction lambda est un objet Python ( PyObject ).


@cdarke bien sûr que tout est un objet en Python, mais spécifiquement les expressions lambda s'évaluent en objets de fonction


@ juanpa.arrivillaga: J'ai mal compris la question. Je l'ai lu comme à quel type une fonction lambda pourrait retourner , pas à quelle classe appartient une fonction lambda.


4 Réponses :


6
votes

Lambda revient presque à définir une fonction régulière.

Dans votre cas, cela équivaut à:

In [1]: type(lambda x: x+1)
Out[1]: function

À cause de cela, et parce que le typage dynamique nature de Python, le type de la valeur de retour dépend de ce que fait la fonction.

L'appel de la fonction avec des valeurs différentes peut renvoyer des valeurs différentes:

In [2]: y = lambda x: x+1

In [3]: y(1)
Out[3]: 2

In [4]: type(y(1))
Out[4]: int

In [5]: y(1.0)
Out[5]: 2.0

In [6]: type(y(1.0))
Out[6]: float

Lorsqu'on pose des questions sur le type de la fonction lambda elle-même , le type est simplement function:

def _(x):
    return x+1


0 commentaires

1
votes

Il renvoie le même type que vous pourriez vous attendre. Si vous définissez:

y = lambda x: x+1

alors type (y (1)) renverra int type (y (1.1)) renverra float . type (y) renverra simplement function.


0 commentaires

4
votes
>>> type(lambda x: x+1)
<class 'function'>

0 commentaires

1
votes

Les lambdas ne sont qu'un simple sucre syntaxique en plus des fonctions. De la documentation (c'est moi qui souligne):

De petites fonctions anonymes peuvent être créées avec le mot clé lambda. Cette fonction renvoie la somme de ses deux arguments: lambda a, b: a + b. Les fonctions Lambda peuvent être utilisées partout où des objets fonction sont requis. Ils sont syntaxiquement limités à une seule expression. Sémantiquement, ce ne sont que du sucre syntaxique pour une définition de fonction normale. Comme les définitions de fonctions imbriquées, les fonctions lambda peuvent référencer des variables de la portée contenant:


0 commentaires