如何确定 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 实现的内置函数无法通过此检查,即使它们是可调用的:
<code class="python">>>> isinstance(open, types.FunctionType) False >>> callable(open) True</code>
因此,验证对象的可调用性质应该涉及显式检查其被调用的能力,而不是其一致性到特定的类定义。
以上是如何确定 Python 变量是否代表函数?的详细内容。更多信息请关注PHP中文网其他相关文章!