【问题标题】:Python - Why does extend() and append() return None (void)? [duplicate]Python - 为什么extend()和append()返回None(void)? [复制]
【发布时间】:2012-05-27 12:56:00
【问题描述】:

可能重复:
why does python's list.append evaluate to false?

在我看来,我认为list1.extend(list2)list1.append(num) 应该返回变异列表而不是None(无效)。以及破坏性地改变原始列表的副作用。

【问题讨论】:

  • 我个人认为这也是一个设计糟糕的 API,基于变异的 API 很糟糕。然而,这个问题不适合 StackOverflow,因为它不是一个问题;这种意见很可能只会引起辩论。除非我们考虑标题“为什么 extend() 和 append() 返回 None (void)?”作为问题的一部分,除非您问开发人员自己的想法,否则很难回答哪种情况。
  • 另外,如果你想要这种行为,你可以使用yourList + [1]yourList + [1,2,3]。可悲的是,命令式编程风格(如 python)“通常”会丢弃返回值,如果它们自己在行上使用的话。
  • @ninjagecko - 一个问题被问到,那个问题是Why does extend() and append() return None (void)? 请特别查看这个答案:(stackoverflow.com/a/1682601/21945)

标签: python arrays immutability


【解决方案1】:

我相信其目的是提高代码的可读性并减少错误。这个决定是很久以前做出的,但是您可能可以通过查看 python/python-dev 邮件列表的档案找到更多信息。

Python3 本来是改变这种行为的机会,但正如您所见,它仍然存在,因此开发团队不认为是设计错误

【讨论】:

  • 好答案。设计团队的糟糕决定
猜你喜欢
  • 2020-09-11
相关资源
最近更新 更多