Python扩展空列表的bug?

31

为什么Python 2.5.2会有以下行为?

>>>[2].extend([]) == [2]
False

>>> [2].extend([]) == None
True

$ python --version
Python 2.5.2

我想我在这里理解有误,但直觉上我认为[2].extend([])应该得到[2]。


当有解释器时,谁需要直觉呢?只需输入 print [2].extend([]) 即可。 - tzot
2个回答

52

Extend 是列表的一个方法,它可以修改这个列表,但不会返回 self (而是返回 None)。如果你需要修改后的值作为表达式的值,可以使用 + 运算符,例如 [2]+[]


15

没错。

>>> x = [2]
>>> x.extend([]) # Nothing is printed because the return value is None
>>> x == [2]
True
>>> x
[2]

他们有意这样做是为了让你记住extend()函数实际上是原地修改列表的。sort()函数也是一样,它总是返回None。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接