我是否正确假设所有函数(内置或用户定义)都属于同一个类,但默认情况下该类似乎没有绑定到任何变量?
如何检查对象是否为函数?
我猜这可以做到:
def is_function(x):
def tmp()
pass
return type(x) is type(tmp)
它似乎并不整洁,我甚至不能100%确定它是完全正确的。
答案 0 :(得分:14)
在python2中:
callable(fn)
在python3中:
isinstance(fn, collections.Callable)
因为Callable是一个抽象基类,这相当于:
hasattr(fn, '__call__')
答案 1 :(得分:4)
如何检查对象是否为函数?
与检查callables不一样
hasattr(object, '__call__')
以及python 2.x
callable(object) == True
答案 2 :(得分:1)
你可以这样做:
def is_function(x):
import types
return isinstance(x, types.FunctionType) \
or isinstance(x, types.BuiltinFunctionType)
答案 3 :(得分:-2)
try:
magicVariable()
except TypeError as e:
print( 'was no function' )