TypeError:'int' 对象不可调用

2024-12-17 08:31:00
admin
原创
149
摘要:问题描述:鉴于以下情况: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大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1590  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1361  
  信创产品在政府采购中的占比分析随着信息技术的飞速发展以及国家对信息安全重视程度的不断提高,信创产业应运而生并迅速崛起。信创,即信息技术应用创新,旨在实现信息技术领域的自主可控,减少对国外技术的依赖,保障国家信息安全。政府采购作为推动信创产业发展的重要力量,其对信创产品的采购占比情况备受关注。这不仅关系到信创产业的发展前...
信创和国产化的区别   18  
  信创,即信息技术应用创新产业,旨在实现信息技术领域的自主可控,摆脱对国外技术的依赖。近年来,国货国用信创发展势头迅猛,在诸多领域取得了显著成果。这一发展趋势对科技创新产生了深远的推动作用,不仅提升了我国在信息技术领域的自主创新能力,还为经济社会的数字化转型提供了坚实支撑。信创推动核心技术突破信创产业的发展促使企业和科研...
信创工作   18  
  信创技术,即信息技术应用创新产业,旨在实现信息技术领域的自主可控与安全可靠。近年来,信创技术发展迅猛,对中小企业产生了深远的影响,带来了诸多不可忽视的价值。在数字化转型的浪潮中,中小企业面临着激烈的市场竞争和复杂多变的环境,信创技术的出现为它们提供了新的发展机遇和支撑。信创技术对中小企业的影响技术架构变革信创技术促使中...
信创国产化   19  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用