Spyder error: 'int' object is not callable but no error in different IDE

Spyder error: 'int' object is not callable but no error in different IDE

我有一个奇怪的问题需要帮助。我在 Spyder 中有我想要 运行 的代码,但我一直收到错误说明

类型错误:'int'对象不可调用。

s ='abcdefgbobaaaaabob'
end = 3
bobs = 0
for i in range(len(s)):
    finder = s[i:end]
    if finder == 'bob':
        bobs += 1
    end += 1
print('Number of times bob occurs is: '+ str(bobs))

奇怪的是,当我在 IDLE 中 运行 相同的代码时,它工作正常并给出了我需要的结果。我什至尝试了 运行ning pythontutor.com 中的代码,没有错误。

谁能告诉我为什么会这样!?

我 运行 它也使用 Spyder,而且效果很好。您在使用 Python3 吗?

当您有一个整数对象,但您的代码试图将它当作一个函数来使用时,就会发生此错误。例如:

  • 您正在使用一个函数,该函数期望另一个函数作为其参数之一,但您传递给它的是一个整数,或者
  • 您通过将一个整数值赋给相同的名称来覆盖了一个函数。

第一个似乎不是这里的问题,所以您可能不小心覆盖了正在使用的其中一个功能?

>>> str(3)
'3'
>>> str = 17
>>> str(3)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable

在 Spyder 中,您可以在 Variable Explorer 选项卡中检查它,然后右键单击它并选择 Remove,或键入(例如)del(str) 在 Python 控制台中删除不正确的分配。

Spyder 保存您之前创建的变量。您可以在变量资源管理器选项卡中查看这些创建的变量。

如果那里存在任何变量,并且您在任何 python 程序中使用相同的变量作为函数。它会抛出错误 "int object is not callable" 或“'str' object is not callable”,具体取决于变量资源管理器中存在的变量。

解决方案:

  1. 只需右键单击变量资源管理器中的此类变量即可将其删除

  2. 在控制台中输入 del(variable_Name)。 eg.del(len) 或 del len

请查看截图-spyder IDE: