python - una - reemplazar valores pandas
¿Cómo puedo probar si una variable contiene una lambda? (5)
Use el módulo de types
:
from types import *
assert isinstance(lambda m: m, LambdaType)
De acuerdo con los documentos, es seguro usar from types import *
.
¿Hay alguna forma de probar si una variable contiene una lambda
? El contexto es que me gustaría verificar un tipo en una prueba unitaria:
self.assertEquals(lambda, type(myVar))
El type
parece ser "función", pero no vi ningún tipo incorporado obvio para que coincida. Obviamente, podría escribir esto, pero se siente torpe:
self.assertEquals(type(lambda m: m), type(myVar))
def isalambda(v):
LAMBDA = lambda:0
return isinstance(v, type(LAMBDA)) and v.__name__ == LAMBDA.__name__
mylambda.func_name == ''<lambda>''
Esto es años vencidos, pero callable(mylambda)
devolverá True
para cualquier función o método invocable, incluido lambdas. hasattr(mylambda, ''__call__'')
hace lo mismo, pero es mucho menos elegante.
Si necesita saber si algo es exclusivamente un lambda, entonces mylambda.__name__ == "<lambda>"
es lo que usaría.
(Esta respuesta es relevante para Python2.7.5.)
No hay necesidad de hacer ningún corte, el módulo integrado de inspección lo maneja por usted.
import inspect
print inspect.isfunction(lambda x:x)