附加到元组中定义的列表-是bug吗?

所以我有这段代码:


tup = ([1,2,3],[7,8,9])

tup[0] += (4,5,6)

生成此错误:


TypeError: 'tuple' object does not support item assignment

而这段代码:


tup = ([1,2,3],[7,8,9])

try:

    tup[0] += (4,5,6)

except TypeError:

    print tup

打印此:


([1, 2, 3, 4, 5, 6], [7, 8, 9])

这是预期的行为吗?


注意

我意识到这不是一个很常见的用例。但是,尽管预期会出现错误,但我没想到列表会发生变化。


互换的青春
浏览 267回答 3
3回答

长风秋雁

好吧,我猜tup[0] += (4, 5, 6)是这样翻译的:tup[0] = tup[0].__iadd__((4,5,6))tup[0].__iadd__((4,5,6))通常会更改第一个元素中的列表来执行。但是由于元组是不可变的,因此分配失败。
打开App,查看更多内容
随时随地看视频慕课网APP