擅长:python、mysql、java
<p>确定变量是否为函数的最佳方法是使用<a href="http://docs.python.org/2/library/inspect.html#inspect.isfunction">inspect.isfunction</a>。一旦确定变量是函数,就可以使用<code>.__name__</code>属性来确定函数的名称并执行必要的检查。你知道吗</p>
<p>例如:</p>
<pre><code>import inspect
def helloworld():
print "That famous phrase."
h = helloworld
print "IsFunction: %s" % inspect.isfunction(h)
print "h: %s" % h.__name__
print "helloworld: %s" % helloworld.__name__
</code></pre>
<p>结果是:</p>
<pre><code>IsFunction: True
h: helloworld
helloworld: helloworld
</code></pre>
<p><code>isfunction</code>是标识函数的首选方法,因为类中的方法也是<code>callable</code>:</p>
<pre><code>import inspect
class HelloWorld(object):
def sayhello(self):
print "Hello."
x = HelloWorld()
print "IsFunction: %s" % inspect.isfunction(x.sayhello)
print "Is callable: %s" % callable(x.sayhello)
print "Type: %s" % type(x.sayhello)
</code></pre>
<p>结果是:</p>
<pre><code>IsFunction: False
Is callable: True
Type: <type 'instancemethod'>
</code></pre>