擅长:python、mysql、java
<p>对于您通常会检查的功能</p>
<pre><code>>>> callable(lambda: 0)
True
</code></pre>
<p>尊重鸭子打字。但是有<code>types</code>模块:</p>
<pre><code>>>> import types
>>> dir(types)
['BooleanType', 'BufferType', 'BuiltinFunctionType', 'BuiltinMethodType', 'ClassType', 'CodeType', 'ComplexType', 'DictProxyType', 'DictType', 'DictionaryType', 'EllipsisType', 'FileType', 'FloatType', 'FrameType', 'FunctionType', 'GeneratorType', 'GetSetDescriptorType', 'InstanceType', 'IntType', 'LambdaType', 'ListType', 'LongType', 'MemberDescriptorType', 'MethodType', 'ModuleType', 'NoneType', 'NotImplementedType', 'ObjectType', 'SliceType', 'StringType', 'StringTypes', 'TracebackType', 'TupleType', 'TypeType', 'UnboundMethodType', 'UnicodeType', 'XRangeType', '__builtins__', '__doc__', '__file__', '__name__', '__package__']
</code></pre>
<p>但是您不应该检查<code>type</code>相等,而是使用<code>isinstance</code></p>
<pre><code>>>> isinstance(lambda: 0, types.LambdaType)
True
</code></pre>