[Python] 在 python 程式中判斷某個物件是不是一個函式
今天想要在 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
(本頁面已被瀏覽過 202 次)