如何在Python中检查函数类型?

kra*_*r65 2 python types function

我有一个列表,其中一些也可以是函数.如果它是一个函数我想执行它.为此我做了类型检查.这通常适用于其他类型,如str,int或float.但是对于一个功能它似乎不起作用:

>>> def f():
...     pass
... 
>>> type(f)
<type 'function'>
>>> if type(f) == function: print 'It is a function!!'
... 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'function' is not defined
>>>
Run Code Online (Sandbox Code Playgroud)

有人知道如何检查功能类型吗?

Dan*_*man 8

不检查类型,检查操作.你实际上并不关心它是否是一个函数(例如,它可能是一个带有__call__方法的类实例) - 你只关心它是否可以被调用.所以使用callable(f).


小智 5

import types

if type(f) == types.FunctionType: 
    print 'It is a function!!'
Run Code Online (Sandbox Code Playgroud)