修复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
我们有三个变量v
、g,
和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