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

dic*_*ciu 33 python list

是否有理由进行list.append评估?或者只是在成功发挥作用时返回0的C约定?

>>> u = []
>>> not u.append(6)
True
Run Code Online (Sandbox Code Playgroud)

Ale*_*lli 39

大多数Python方法都会异地改变容器None- 一种命令查询分离原则的应用.(Python对事物总是相当务实,所以一些变异器在获得它时会返回一个可用的值,否则会很昂贵或一团糟 - 这个pop方法就是这种实用主义的一个很好的例子 - 但那些绝对是例外,而不是规则,并没有理由做出append例外).


Mat*_* M. 20

None计算结果False和蟒蛇不返回假设任何事情都返回的功能None.

如果输入:

>> print u.append(6)
None
Run Code Online (Sandbox Code Playgroud)

Tadaaam :)

  • 更新列表的Mutator(如追加,扩展,排序等)不返回值. (6认同)

Sil*_*ost 6

因为.append方法返回None,因此not None求值为True.Python出错时通常会引发错误:

>>> 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'
Run Code Online (Sandbox Code Playgroud)


Mat*_*son 5

它就地修改列表,然后返回None. None评估为假.