为什么使用sum()对bytes元素的元组求和时会触发TypeError?
报错具体原因
这个报错的核心是sum函数的默认逻辑,和你传入的元素本身是bytes类型无关:
- Python内置
sum函数的定义为sum(iterable, start=0),累加操作默认从整数类型的起始值0开始计算 - 你执行
sum(_tuple)等价于运行以下逻辑:0 + b'\x01' + b'\x02' - 第一步就触发了整数和bytes类型的加法运算,Python没有定义这两个类型的加法操作规则,因此直接抛出
TypeError: unsupported operand type(s) for +: 'int' and 'bytes'。
如果需要实现多个bytes对象的拼接累加,可以手动指定起始值为空bytes:
a = b'\x01' b = b'\x02' _tuple = (a, b) res = sum(_tuple, start=b'') # 运行结果为 b'\x01\x02'
内容的提问来源于stack exchange,提问作者Matthieu
相关产品推荐
相关产品推荐

