为什么list.append在布尔上下文中求值为false?

2024-04-18 10:42:31 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有理由将list.append评估为false?或者只是成功时返回0的C约定发挥作用?

>>> u = []
>>> not u.append(6)
True

Tags: falsetruenotlistappend理由发挥作用
3条回答

None的计算结果为False,在python中,假定不返回任何内容的函数已返回None

如果您键入:

>> print u.append(6)
None

塔达姆:)

大多数对容器进行就地变异的Python方法返回None——这是Command-query separation原则的应用。(Python在处理事情时总是相当务实,所以当得到一个有用的值时,一些变异器确实会返回一个有用的值,否则代价会很高或是一团糟,pop方法就是这种务实主义的一个很好的例子——但这些绝对是例外,而不是规则,没有理由让append成为例外)。

因为.append方法返回None,因此not None的计算结果为True。Python on error通常会引发错误:

>>> a = ()
>>> a.append(5)
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    a.append(5)
AttributeError: 'tuple' object has no attribute 'append'

相关问题 更多 >