ral*_*ide 21 python lambda types class
Is there a way to test whether a variable holds a lambda?
The context is I'd like to check a type in a unit test:
self.assertEquals(lambda, type(myVar))
Run Code Online (Sandbox Code Playgroud)
The type seems to be "function" but I didn't see any obvious builtin type to match it.
Obviously, I could write this, but it feels clumsy:
self.assertEquals(type(lambda m: m), type(myVar))
Run Code Online (Sandbox Code Playgroud)
Aug*_*sta 24
这是过去几年,但callable(mylambda)将返回True任何可调用的函数或方法,包括lambdas.hasattr(mylambda, '__call__')做同样的事情,但不那么优雅.
如果您需要知道某些东西是否完全属于 lambda,那么mylambda.__name__ == "<lambda>"就是我使用的东西.
(这个答案与Python2.7.5有关.)
Ale*_*lli 18
def isalambda(v):
LAMBDA = lambda:0
return isinstance(v, type(LAMBDA)) and v.__name__ == LAMBDA.__name__
Run Code Online (Sandbox Code Playgroud)
使用types 模块:
from types import *
assert isinstance(lambda m: m, LambdaType)
Run Code Online (Sandbox Code Playgroud)
根据文档,使用是安全的from types import *.
小智 7
无需做任何改动,内置的inspect模块可以为您处理。
import inspect
print inspect.isfunction(lambda x:x)
Run Code Online (Sandbox Code Playgroud)