Python 类型错误:';int';对象不可调用-如何识别导致此错误的原因?

Python 类型错误:';int';对象不可调用-如何识别导致此错误的原因?,python,function,debugging,call,typeerror,Python,Function,Debugging,Call,Typeerror,如果我能收到一些关于为什么我会收到这种类型错误的输入,那将是绝对惊人的。我已经调试了几个小时,但我在函数中找不到导致此特定错误的原因…:( defa_加上abs_b(a,b): 如果b

如果我能收到一些关于为什么我会收到这种类型错误的输入,那将是绝对惊人的。我已经调试了几个小时,但我在函数中找不到导致此特定错误的原因…:(

defa_加上abs_b(a,b):
如果b<0:
f=子(a,b)
其他:
f=添加(a,b)
返回f(a,b)

f
是一个
int
float
,不是一个函数。您不能调用它

当您试图将其称为
f(a,b)
时,出现了以下错误:

TypeError:“int”对象不可调用


您只需返回
f
即可避免此问题。

在最后一行中,您认为变量
f
中有什么内容?只需返回f,而不返回f(a,b)您是否仔细查看了抛出错误时得到的回溯?请注意,包含完整的回溯始终是一个好主意;您可以从回溯中看出很多东西,例如引发异常的确切行。我如何回溯代码?是否有特定的软件可供使用?我是一个绝对的新手,我非常欣赏wo有人告诉我很多事情:)回溯通常由Python自动打印。如果
sub
add
被绑定到数字会怎么样?OP没有包含回溯,因此我们不能确定是
f(a,b)
表达式引起的。当然,这是一个可能的原因。OP用标题添加了一部分回溯。我觉得自己像个白痴。。。但是谢谢你@阿萨努尔哈克:不,那不是回溯。这只是一条例外信息。回溯包括整个堆栈的文件名、行号和代码行。好的,现在我明白你的意思了,完全同意。
def a_plus_abs_b(a, b):
    if b < 0:
        f = sub(a, b)
    else:
        f = add(a, b)
    return f(a, b)