TypeError: 'int' object is not callable

前端 未结 6 2103
深忆病人
深忆病人 2020-11-22 14:45

Given the following integers and calculation

from __future__ import division

a = 23
b = 45
c = 16

round((a/b)*0.9*c)

This results in:

相关标签:
6条回答
  • 2020-11-22 14:55

    I got the same error (TypeError: 'int' object is not callable)

    def xlim(i,k,s1,s2):
       x=i/(2*k)
       xl=x*(1-s2*x-s1*(1-x)) / (1-s2*x**2-2*s1*x(1-x))
       return xl 
    ... ... ... ... 
    
    >>> xlim(1,100,0,0)
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    File "<stdin>", line 3, in xlim
    TypeError: 'int' object is not callable
    

    after reading this post I realized that I forgot a multiplication sign * so

    def xlim(i,k,s1,s2):
       x=i/(2*k)
       xl=x*(1-s2*x-s1*(1-x)) / (1-s2*x**2-2*s1*x * (1-x))
       return xl 
    
    xlim(1.0,100.0,0.0,0.0)
    0.005
    

    tanks

    0 讨论(0)
  • 2020-11-22 14:57

    I was also facing this issue but in a little different scenario.

    Scenario:

    param = 1
    
    def param():
        .....
    def func():
        if param:
            var = {passing a dict here}
            param(var)
    

    It looks simple and a stupid mistake here, but due to multiple lines of codes in the actual code, it took some time for me to figure out that the variable name I was using was same as my function name because of which I was getting this error.

    Changed function name to something else and it worked.

    So, basically, according to what I understood, this error means that you are trying to use an integer as a function or in more simple terms, the called function name is also used as an integer somewhere in the code. So, just try to find out all occurrences of the called function name and look if that is being used as an integer somewhere.

    I struggled to find this, so, sharing it here so that someone else may save their time, in case if they get into this issue.

    Hope this helps!

    0 讨论(0)
  • 2020-11-22 15:02

    Somewhere else in your code you have something that looks like this:

    round = 42
    

    Then when you write

    round((a/b)*0.9*c)
    

    that is interpreted as meaning a function call on the object bound to round, which is an int. And that fails.

    The problem is whatever code binds an int to the name round. Find that and remove it.

    0 讨论(0)
  • 2020-11-22 15:05

    Stop stomping on round somewhere else by binding an int to it.

    0 讨论(0)
  • 2020-11-22 15:06

    In my case I changed:

    return <variable>
    

    with:

    return str(<variable>)
    

    try with the following and it must work:

    str(round((a/b)*0.9*c))
    
    0 讨论(0)
  • 2020-11-22 15:13

    As mentioned you might have a variable named round (of type int) in your code and removing that should get rid of the error. For Jupyter notebooks however, simply clearing a cell or deleting it might not take the variable out of scope. In such a case, you can restart your notebook to start afresh after deleting the variable.

    0 讨论(0)
提交回复
热议问题