为什么[] .append()在python中不起作用?

时间:2013-01-10 19:17:21

标签: python

为什么这样做 -

a = []
a.append(4)
print a

但这不是 -

print [].append(4)

第二种情况的输出是None。你能解释输出吗?

3 个答案:

答案 0 :(得分:12)

append方法没有返回值。它会更改列表,因为您没有将[]分配给任何变量,它只是“在空间中丢失”

class FluentList(list):
    def append(self, value):
        super(FluentList,self).append(value)
        return self

    def extend(self, iterable):
        super(FluentList,self).extend(iterable)
        return self

    def remove(self, value):
        super(FluentList,self).remove(value)
        return self

    def insert(self, index, value):
        super(FluentList,self).insert(index, value)
        return self 

    def reverse(self):
        super(FluentList,self).reverse()
        return self

    def sort(self, cmp=None, key=None, reverse=False):
        super(FluentList,self).sort(cmp, key, reverse)
        return self

li = FluentList()
li.extend([1,4,6]).remove(4).append(7).insert(1,10).reverse().sort(key=lambda x:x%2)
print li

我没有重载所有相关方法,但概念应该是明确的。

答案 1 :(得分:1)

方法append不返回任何值,换句话说只有None

a是可变的,它的值会改变,那里没有任何东西可以返回。

答案 2 :(得分:1)

追加返回None

来自你的例子:

>>> print a.append(4)
None