2014-04-22 121 views
0

我正在編寫一個腳本,其中我想驗證給定的函數論證本身是否是函數。我已經檢查了IDLE type()這個說法。 讓我們假設論證者被稱爲a,並且我知道知道a是一個函數。如何根據類型「功能」檢查對象的類型

當我在shell中鍵入type(a),這會打印: <class 'function'>

但是,如果我嘗試輸入: type(add) == function 它給了我一個NameError:名字「功能」沒有定義 (這是不是我唯一的嘗試,但如果我把他們都在這裏,這將太長)

我想我明白那部分,因爲我覺得function並不像intfloat關鍵字,它可以讓我做像條件語句type(3) == int

但是,知道這一點,我怎麼能檢查,如果事情是從給定內置類型,如果該類型沒有特定的關鍵字(或者,這些關鍵字是不是知名)

提前致謝。

+1

這可能會幫助你http://stackoverflow.com/questions/624926/how-to-detect-whether-a-python-variable-is-a-function –

+0

謝謝你的男人。在這個鏈接上的好答案。 – RGS

回答

2

您可以使用內置的isinstance來檢查變量的類型是否符合函數的類型。不幸的是,沒有捷徑可手工創建一個函數類型,就像int你可以導入typestypes.FunctionType

>>> import types 
>>> isinstance(add, types.FunctionType) 
True 

檢查,你也可以從inspect導入isfunction執行相同的檢查

import inspect 
inspect.isfunction(add) 
2
from inspect import isfunction 

isfunction(a)