我正在编写一个脚本,我想验证一个函数的给定参数本身是否是一个函数。我已经在IDLE中检查了该参数的type()
。
让我们假设辩论者被称为a
并且我知道 a
是一个函数。
当我在命令行管理程序中键入type(a)
时,会打印出来:
<class 'function'>
但如果我尝试输入:
type(add) == function
它给了我一个NameError:名称'function'未定义
(这不是我唯一的尝试,但如果我把它们全部放在这里,这将会变得太长)
我想我理解这一部分,因为我认为function
不是像int
或float
这样的关键字,它可以让我像type(3) == int
这样的条件
但是,知道这一点,如何检查某些东西是否来自给定的内置类型,如果该类型没有特定的关键字(或者这些关键字不是众所周知的)
提前致谢。
答案 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)