如何确定 Python 中的变量是否代表函数
在 Python 中,检查变量是否指向功能。最初,人们可能会考虑使用 isinstance(x, function),但 Python 会为未定义的函数类引发 NameError。
Callable Objects 和 hasattr
来确定是否变量是一个函数,Python提供了callable()。对于 Python 2.x 和 Python 3.2 ,此方法提供检查可调用对象的功能。或者,对于 3.2 之前的 Python 3.x,可以使用 hasattr(obj, '__call__') 来检查对象是否拥有可调用对象的 __call__ 属性特征。
关于 types.FunctionType 的注意事项和inspect.isfunction
虽然已经建议使用types.FunctionTypes 或inspect.isfunction 的方法,但这些方法有局限性。对于非 Python 函数,它们返回 False。用 C 实现的内置函数无法通过此检查,即使它们是可调用的:
>>> isinstance(open, types.FunctionType)
False
>>> callable(open)
True
因此,验证对象的可调用性质应该涉及显式检查其被调用的能力,而不是其与特定类定义的一致性。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3