namedtuple._replace()不符合文档描述

65 投票
5 回答
52732 浏览
提问于 2025-04-15 18:39

我在使用 namedtuple._replace() 的时候遇到了问题,所以我直接从文档上复制了代码:

Point = namedtuple('Point', 'x,y')

p = Point(x=11, y=22)

p._replace(x=33)

print p

结果我得到了:

Point(x=11, y=22)

而不是:

Point(x=33, y=22)

就像文档里显示的那样。

我是在Windows 7上用Python 2.6。

这是怎么回事呢?

5 个回答

13

namedtuple._replace() 这个方法会返回一个新的元组,而原来的元组不会被改变。

21

元组是不可变的,也就是说一旦创建就不能更改。_replace() 方法会返回一个新的元组,里面包含你所做的修改:

p = p._replace(x=33)
125

是的,它确实如此,功能和文档上说的一样。

._replace 返回一个新的命名元组,它不会改变原来的那个,所以你需要这样写:

p = p._replace(x=33)

更多信息请查看这里:somenamedtuple._replace(kwargs)

撰写回答