是否有一個原因是list.append
評估爲false?還是僅僅是成功時返回0的C約定呢?爲什麼list.append評估爲false?
>>> u = []
>>> not u.append(6)
True
是否有一個原因是list.append
評估爲false?還是僅僅是成功時返回0的C約定呢?爲什麼list.append評估爲false?
>>> u = []
>>> not u.append(6)
True
是變異的容器就地回None
大多數Python方法 - 的Command-query separation原則的應用程序。 (Python總是對事情合理務實,所以有些增變器在獲得它時會返回一個可用值,否則會很昂貴或是一團糟 - pop
方法就是這種實用主義的一個很好的例子 - 但這些絕對是例外,而不是規則,並且沒有理由使append
成爲例外)。
我在寫作的時候遇到了問題(y.append(5)和(yield y))期望一個成功的列表除了(間接)評估爲假。 – diciu 2009-11-05 18:56:34
None
計算爲False
和蟒蛇不返回假設任何事情又回到None
功能。
如果鍵入:
>> print u.append(6)
None
Tadaaam :)
更新列表的mutators(如追加,擴展,排序等)不返回值。 – 2009-11-05 18:41:47
'None'不會*評估*爲'False'。 – SwiftsNamesake 2016-11-19 14:23:02
@SwiftsNamesake試試'bool(無)' – 2017-02-15 09:49:59
它修改就地列表,並返回None
。 None
評估爲false。
因爲.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
>>>
list.append
函數確實返回None
,它只是將值添加到您用來調用該方法的列表中。
這是一件讓事情更清晰:
>>> u = []
>>> not u
False
>>> print(u.append(6)) # u.append(6) == None
None
>>> not u.append(6) # not None == True
True
一個可能更好地表達:*爲什麼蟒蛇不使用'Builder'模式..所以我們可以做'u.append(6)。附加(7)。這是很煩人的。 – javadba 2017-05-07 01:16:10