You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么对Shirt类实例的price属性用sum()报错,用+运算符却正常?

问题原因说明

两种写法的语法逻辑存在本质差异:

  1. +运算符的执行逻辑
    你直接用shirt_one.price + shirt_two.price时,是对两个整数类型的属性值执行原生整数加法运算,完全符合Python的运算符规则,因此可以正常得到结果。
  2. sum()函数的参数规则
    Python内置sum()函数的标准语法是:
sum(iterable, start=0)
  • 第一个参数iterable要求必须是可迭代对象(列表、元组、集合等可遍历的结构),函数会遍历这个结构里的所有元素累加
  • 第二个可选参数start是求和的起始值,默认是0
    你之前写的sum(shirt_one.price, shirt_two.price)等于给第一个参数传入了整数25(非可迭代对象),第二个参数传入了起始值10,sum()尝试遍历第一个参数时发现是不可遍历的整数类型,因此直接抛出TypeError: 'int' object is not iterable报错。
正确的sum()写法

如果要用sum()计算总价格,只需要把多个价格放到可迭代对象中作为第一个参数即可:

total = sum([shirt_one.price, shirt_two.price])
print(total)

运行后可以得到和+运算符一致的结果35。

内容的提问来源于stack exchange,提问作者Nakshatra Garg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 08:06:02