[Python] 在 python 程式中判斷某個物件是不是一個函式

[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

 

(本頁面已被瀏覽過 132 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料