如何根据“函数”类型检查对象的类型

时间:2014-04-22 08:12:03

标签: python python-3.x types

我正在编写一个脚本,我想验证一个函数的给定参数本身是否是一个函数。我已经在IDLE中检查了该参数的type()。 让我们假设辩论者被称为a并且我知道 a是一个函数。

当我在命令行管理程序中键入type(a)时,会打印出来: <class 'function'>

但如果我尝试输入: type(add) == function 它给了我一个NameError:名称'function'未定义 (这不是我唯一的尝试,但如果我把它们全部放在这里,这将会变得太长)

我想我理解这一部分,因为我认为function不是像intfloat这样的关键字,它可以让我像type(3) == int这样的条件

但是,知道这一点,如何检查某些东西是否来自给定的内置类型,如果该类型没有特定的关键字(或者这些关键字不是众所周知的)

提前致谢。

2 个答案:

答案 0 :(得分:2)

您可以使用isinstance内置来检查变量的类型是否符合函数的类型。不幸的是,由于没有简短的方法来创建像int这样的函数类型,您可以导入types并查看types.FunctionType

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

您还可以从isfunction导入inspect以执行相同的检查

import inspect
inspect.isfunction(add)

答案 1 :(得分:2)

from inspect import isfunction

isfunction(a)