为什么Python中8/2(2+2)运行报错,而8/2+(2+2)和8/2*(2+2)正常运行
Python表达式
8/2(2+2)报错原因解析 报错核心原因
Python语法不支持数学场景中常见的「省略乘号」的隐式乘法写法。你写的2(2+2)会被Python解析器识别为:尝试对值为2的int类型对象执行函数调用操作,后面的(2+2)会被判定为函数调用的入参。而int类型本身不属于可调用对象,因此触发了TypeError: 'int' object is not callable的报错。
其余两个表达式可正常运行的原因
8/2+(2+2):表达式中的+是明确的加法运算符,完全符合Python运算符优先级规则,会先计算括号内的2+2=4,再计算8/2=4,最后计算4+4=8,无语法冲突。8/2*(2+2):你主动补全了显式的乘号*,Python会正常识别为乘法运算,按优先级先算括号内结果,再按从左到右顺序计算8/2=4、4*4=16,符合语法要求。
实现计算需求的注意事项
不管你用原生算术运算、sum()函数、Python字典取值计算还是numpy的数值计算方法,都需要遵循Python的语法规则,必须显式书写乘号,不能直接沿用数学中的省略乘号写法。
内容的提问来源于stack exchange,提问作者Shakescreen
相关产品推荐
相关产品推荐

