Lorsque vous créez un lambda en Python, quel type est retourné? Par exemple. type (lambda x: x + 1)
renvoie
4 Réponses :
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
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
.
>>> type(lambda x: x+1) <class 'function'>
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:
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 commedef ma_fonction (x): return x + 1
Donc, le type de votre lambda est le type de x + 1f = lambda x: x + 1; print type (f)
renvoieComme 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.