Python: declaración de aprobación en forma lambda



title python matplotlib (3)

Una pregunta para los principiantes de Python, ¿por qué esta sintaxis no es válida: lambda: pass , mientras que esta: def f(): pass es correcta?

Gracias por su comprensión.


las lambdas solo pueden contener expresiones , básicamente, algo que puede aparecer en el lado derecho de una declaración de asignación. pass no es una expresión, no se evalúa como un valor y a = pass nunca es legal.

Otra forma de pensar sobre esto es que, dado que las lambdas devuelven implícitamente el resultado de su cuerpo, lambda: pass es en realidad equivalente a:

def f():
    return pass

Lo que no tiene sentido. Si realmente necesita un lambda no operado por alguna razón, haga lambda: None lugar.


El valor de retorno de una función sin una declaración de return es None . Puede ver esto desde la función de pass simple que se define en el OP:

>>> def f():
...     pass
... 
>>> print f()
None

Si está buscando una función lambda que sea equivalente a esta función "no-op", entonces puede usar:

lambda: None

Por ejemplo:

>>> f = lambda: None
>>> print f()
None

Eso es un error porque después de los dos puntos tiene que poner el valor de retorno, entonces:

lambda: pass

es igual a:

def f():
   return pass

que de hecho no tiene sentido y produce un SyntaxError también.





anonymous-function