在 Python 中,经常会遇到可能引用函数的变量。确定变量是否指向函数对于各种编程任务至关重要。
尝试使用 isinstance(x, function) 来识别函数可能会因未定义的“函数”对象而失败。相反,请考虑以下方法:
callable() 函数可作为可靠的指标。您可以按如下方式使用它:
<code class="python">callable(obj)</code>
或者,检查 __call__ 属性是否存在:
<code class="python">hasattr(obj, '__call__')</code>
虽然types.FunctionTypes和inspect.isfunction也提供了识别函数的方法,但它们有一些限制。值得注意的是,对于用 C 而不是 Python 实现的函数,它们返回 False。这可能会导致意外的结果,如下所示:
<code class="python">>>> isinstance(open, types.FunctionType) False >>> callable(open) True</code>
最可靠的方法是检查对象是否可以被调用。如果可以的话,它就被认为是一个函数。这被称为“鸭子类型”方法:
<code class="python">callable(obj)</code>
总之,callable() 函数和 __call__ 属性提供了有效的方法来检测变量是否引用 Python 中的函数。请注意与非Python函数的types.FunctionTypes和inspect.isfunction相关的警告。
以上是如何确定 Python 中的变量是否代表函数?的详细内容。更多信息请关注PHP中文网其他相关文章!