为什么list.append评估为false?
是否有一个原因是list.append
评估为false? 还是仅仅是成功时返回0的C约定呢?
>>> u = [] >>> not u.append(6) True
大多数就地改变容器的Python方法都返回None
– 一个Command-Query分离原理的应用程序。 (Python总是对事情合理务实,所以有些增变器在获得它的时候会返回一个可用的值,否则将会是昂贵的或者是一团糟 – pop
方法就是这种实用主义的一个很好的例子 – 但是那些肯定是例外,而不是规则,没有理由append
例外)。
None
评估为False
而在python中,一个不返回任何东西的函数被假定为返回None
。
如果你input:
>> print u.append(6) None
Tadaaam 🙂
它就地修改列表,并返回None
。 None
评估为假。
因为.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'
实际上,它返回None
>>> print u.append(6) None >>> print not None True >>>
>>> print u.append(6) None >>> print not None True >>>