Python - 为什么 extend() 和 append() 返回 None (空值)?

17

我认为list1.extend(list2)list1.append(num)应该返回变异后的列表以及变异id,而不是返回None


5
我个人认为这也是一个设计不良的API,基于突变的API也很糟糕。然而,这个问题在StackOverflow上不合适,因为它不是一个问题;它是一个观点,可能只会引发争论。除非我们将标题“为什么extend()和append()返回None(void)?”视为问题的一部分,否则很难回答,除非你询问开发人员当时在想什么。 - ninjagecko
5
如果您想要这个行为,可以执行 yourList + [1] 或者 yourList + [1,2,3]。遗憾的是,命令式编程风格(如Python)通常会将它们用在单独的行上时舍弃返回值。 - ninjagecko
@ninjagecko - 有一个问题被问到了,那个问题是 为什么extend()和append()返回None(空)? 特别看看这个答案:(https://dev59.com/iHI-5IYBdhLWcg3wxbjv#1682601) - mhawke
1个回答

11

我认为初衷是为了促进可读性并减少错误。这个决定是很久以前做出的,但你可以通过查看python/python-dev邮件列表的存档来找到更多信息。

Python3本来有机会改变这种行为,但正如您看到的那样,它仍然存在,因此开发团队不认为这是一个设计错误。


1
好的答案。设计团队糟糕的决定。 - WestCoastProjects

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接