How to check that variable is a lambda function
我正在做一个包含几个模块的项目。简化问题,有一些变量x,有时可能是int、float或list。但它可能是一个lambda函数,应该以不同的方式进行处理。如何检查变量x是lambda?
例如
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | >>> x = 3 >>> type(x) <type 'int'> >>> type(x) is int True >>> x = 3.4 >>> type(x) <type 'float'> >>> type(x) is float True >>> x = lambda d:d*d >>> type(x) <type 'function'> >>> type(x) is lambda File"<stdin>", line 1 type(x) is lambda ^ SyntaxError: invalid syntax >>> type(x) is function Traceback (most recent call last): File"<stdin>", line 1, in <module> NameError: name 'function' is not defined >>> |
您需要使用
1 2 3 4 5 6 | x = lambda d:d*d import types print type(x) is types.LambdaType # True print isinstance(x, types.LambdaType) # True |
然后您还需要检查名称,以确保我们正在处理lambda函数,就像这样
1 2 3 4 5 6 | x = lambda x: None def y(): pass print y.__name__ # y print x.__name__ # <lambda> |
所以,我们把这两张支票放在一起
1 2 | def is_lambda_function(obj): return isinstance(obj, types.LambdaType) and obj.__name__ =="<lambda>" |
正如@blckknght建议的那样,如果您想检查对象是否只是一个可调用的对象,那么您可以使用内置的