我有一个接受映射的函数,该映射可以是函数的字典,所以我需要区分它们。通常我使用collections
和isinstance
/ issubclass
中的一些抽象基类来检查参数类型,但是函数没有ABC。我知道我可以hasattr(mapping, "__call__")
,但我想知道是否有更具体的功能。
答案 0 :(得分:2)
您可以使用Python 2.7和Python 3.2+中提供的callable(obj)
,但不能使用Python 3.0或Python 3.1。
您还可以使用types.FunctionType
:
isinstance(obj, types.FunctionType)
答案 1 :(得分:1)
您可以使用 types
模块,其中包括 FunctionType
定义的内容:
>>> import types
>>> types.FunctionType
<type 'function'>
>>> def foo(): pass
...
>>> isinstance(foo, types.FunctionType)
True