修复Python错误: Object Is Not Callable

我们将讨论类型错误object is not callable,看看如何修复它。我们还讨论了在Python中使用可调用函数来检查对象是否可调用。

修复Python错误: Object Is Not Callable

当我们看到这个错误(object is not callable)时,我们可能需要了解Python脚本中发生了什么。例如,我们有几行代码来演示问题以及如何修复它。

错误代码:

v=5
g=9
int=3
print(int(g/v*int))

输出:

TypeError: 'int' object is not callable

我们有三个变量vg,int。我们遇到这个问题是因为我们定义了一个名为int的函数变量。

int是一个Python内置函数,这就是为什么我们不能使用int作为变量名;因此,当Python脚本执行时,它会调用变量名int。Python中的int类型的限制名称,因此,当我们将其用作变量时,它会显示此错误。

我们通过更改变量名并再次运行此脚本修复了该错误。

固定代码:

v=5
g=9
d=3
print(int(g/v*d))

输出:

5

请记住,当运行任何在Python脚本中包含函数的程序时,永远不要将该函数作为变量名,因为您将面临同样的问题。字符串、浮点数等也会出现同样的问题。

如果你得到这个错误,你首先应该检查你的变量是否调用了一个函数名。我们不能像下面的代码示例那样调用存储数据类型值的变量。

错误代码:

x='josh'
x()

输出:

TypeError: 'str' object is not callable

Python中的 callable() 函数

如果对象可以像函数一样调用,则callable()函数返回True并接受一个参数,该参数可以是任何对象。

例如,如果我们有一个变量是x等于42,这个变量引用内存中的一个整数。我们可以将x传递给callable()函数,并立即打印结果,看看它是返回true还是false值。

当执行这个时,返回值是false,因为整数42是不可调用的。

示例代码:

x=42
print(callable(x))

输出:

False

让我们看看如果callable()函数调用它自己会发生什么;我们在callable()函数中输入callable并打印出来。我们将看到结果是True,我们也可以传递print函数,它显然也是可调用的。

print(callable(callable))
print(callable(print))

输出:

True
True

假设我们定义了自定义对象,而不是内置对象,它们是否可调用。让我们创建一个名为FUNC()的函数,它返回一些东西。

我们将这个函数名传递给callable()函数并打印输出,这是可调用的。如果我们使用FUNC()调用返回值,它将是一个整数并将其传递给callable()函数。输出将返回False,这是不可调用的,因为我们不能调用一个我们已经看到的整数。

示例:

def FUNC():
    return 51
print(callable(FUNC))
print(callable(FUNC()))

输出:

True
False