TypeError:'int' 对象不可调用

2024-12-17 08:31:00
admin
原创
146
摘要:问题描述:鉴于以下情况:a = 23 b = 45 c = 16 round((a/b)*0.9*c) 运行上述程序会输出错误:TypeError: 'int' object is not callable. 如何将输出四舍五入为整数?解决方案 1:在您的代码中的其他地方,您会看到类似这样的内容:round...

问题描述:

鉴于以下情况:

a = 23
b = 45
c = 16

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

运行上述程序会输出错误:

TypeError: 'int' object is not callable.

如何将输出四舍五入为整数?


解决方案 1:

在您的代码中的其他地方,您会看到类似这样的内容:

round = 42

然后当你写

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

被解释为对绑定到 的对象进行函数调用round,即int。结果失败。

问题在于任何代码都将 绑定int到名称round。找到并删除它。

解决方案 2:

我得到了同样的错误(TypeError:'int'对象不可调用)

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

读完这篇文章后,我意识到我忘了一个乘法符号*所以

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

坦克

解决方案 3:

round通过将 绑定到其他地方来停止践踏int它。

解决方案 4:

我也遇到了这个问题,但情况略有不同。

设想:

param = 1

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

这里看起来很简单而且是一个愚蠢的错误,但是由于实际代码中有多行代码,我花了一些时间才弄清楚我使用的变量名与我的函数名相同,因此我收到此错误。

将函数名称更改为其他名称并且它有效。

因此,基本上,根据我的理解,此错误意味着您试图将整数用作函数,或者更简单地说,被调用的函数名称也在代码中的某个地方用作整数。因此,只需尝试找出被调用函数名称的所有出现情况,并查看它是否在某个地方被用作整数。

我费了好大劲才找到这个,因此,在这里分享,以便其他人可以节省时间,以防他们遇到这个问题。

解决方案 5:

导致此错误“ TypeError: 'int' object is not callable ”的原因有两个

  1. 函数有一个整数值

考虑

a = [5, 10, 15, 20]
max = 0
max = max(a)
print(max)

这将产生 TypeError:'int' 对象不可调用。

只需将变量名“max”更改为var(say)。

a = [5, 10, 15, 20]
var = 0
var = max(a)
print(var)

上述代码将完美运行,没有任何错误!!

  1. 缺少数学运算符

考虑

a = 5
b = a(a+1)
print(b)

这也会产生 TypeError:'int' 对象不可调用。

您可能忘记在中间放置运算符(在本例中为 '*')

解决方案 6:

就我而言,我改变了:

return <variable>

和:

return str(<variable>)

尝试以下操作,它一定会起作用:

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

解决方案 7:

有时问题可能是在计算时忘记了运算符。

例如:它

print(n-(-1+(math.sqrt(1-4(2*(-n))))/2))必须

print(n-(-1+(math.sqrt(1-4*(2*(-n))))/2))

高血压

解决方案 8:

如上所述,您int的代码中可能有一个变量名为 round(类型为 ),删除该变量应该可以消除错误。但是,对于 Jupyter 笔记本,简单地清除单元格或删除它可能不会使变量超出范围。在这种情况下,您可以在删除变量后重新启动笔记本以重新开始。

解决方案 9:

您始终可以使用以下方法来消除函数歧义。

__import__('__builtin__').round((a/b)*0.9*c)

__builtin__是所有内置函数(如 round、min、max 等)的模块名称。对来自其他模块的函数使用适当的模块名称。

解决方案 10:

我遇到此错误是因为我正在调用模型内部使用@property 装饰器的函数。

@property
def volume_range(self):
    return self.max_oz - self.min_oz

当我尝试在序列化器中调用此方法时,出现错误“TypeError:'int'对象不可调用”。

    def get_oz_range(self, obj):
      return obj.volume_range()

简而言之,问题在于 @property 装饰器将函数变成了 getter。您可以在此 SO 响应中了解有关 property() 的更多信息。

对我来说,解决方案是像访问变量一样访问 volume_range,而不是将其作为函数调用:

    def get_oz_range(self, obj):
      return obj.volume_range # No more parenthesis

解决方案 11:

仅供参考:'int' object is not callable如果您意外地在 Pandas 数据框中使用了.size()方法(不存在)而不是.size属性,也会出现错误,如下所示。因此,错误可能会出现在意想不到的地方。

import pandas as pd
s = pd.Series([35, 52, 63, 52])
print("unique numbers: ",s.unique())
print("number of unique values: ",s.unique().size())
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1565  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1354  
  信创国产芯片作为信息技术创新的核心领域,对于推动国家自主可控生态建设具有至关重要的意义。在全球科技竞争日益激烈的背景下,实现信息技术的自主可控,摆脱对国外技术的依赖,已成为保障国家信息安全和产业可持续发展的关键。国产芯片作为信创产业的基石,其发展水平直接影响着整个信创生态的构建与完善。通过不断提升国产芯片的技术实力、产...
国产信创系统   21  
  信创生态建设旨在实现信息技术领域的自主创新和安全可控,涵盖了从硬件到软件的全产业链。随着数字化转型的加速,信创生态建设的重要性日益凸显,它不仅关乎国家的信息安全,更是推动产业升级和经济高质量发展的关键力量。然而,在推进信创生态建设的过程中,面临着诸多复杂且严峻的挑战,需要深入剖析并寻找切实可行的解决方案。技术创新难题技...
信创操作系统   27  
  信创产业作为国家信息技术创新发展的重要领域,对于保障国家信息安全、推动产业升级具有关键意义。而国产芯片作为信创产业的核心基石,其研发进展备受关注。在信创国产芯片的研发征程中,面临着诸多复杂且艰巨的难点,这些难点犹如一道道关卡,阻碍着国产芯片的快速发展。然而,科研人员和相关企业并未退缩,积极探索并提出了一系列切实可行的解...
国产化替代产品目录   28  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用