10

为什么这行得通 -

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

但这并不——

print [].append(4)

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

4

3 回答 3

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

我没有重载所有有问题的方法,但概念应该很清楚。

于 2013-01-10T19:18:48.140 回答
1

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

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

于 2013-01-10T19:20:08.363 回答
1

追加回报None

从你的例子:

>>> print a.append(4)
None
于 2013-01-10T19:25:01.793 回答