今天想要在 python 程式中,判斷某個變數是不是一個函式,

如果是的話要做相對應的處理~

 

假設定義了下面的 f() 函式:

>>> def f():
...     pass
...

 

用 type 看一下,型態是 function:

>>> type(f)
<type 'function'>

 

很直覺的用 isinstance() 看一下這個 f 是不是一個 func 或是 function,結果都不行:

>>> isinstance(f, func)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'func' is not defined

>>> isinstance(f, function)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'function' is not defined

 

在網路上查了一下,看到這篇 how to detect whether a python variable is a function?

原來是要看某個變數是不是有 __call__ 這個成員,有的話就是可以呼叫 (callable) 的物件

(有可能是一個 class 也有可能是一個函式):

>>> hasattr(f, "__call__")
True

 

文章標籤
創作者介紹

亂打一通的心情日記

ephrain 發表在 痞客邦 PIXNET 留言(0) 人氣()