10

なぜこれが機能するのですか?

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

しかし、これはしません-

print [].append(4)

2番目の場合の出力はです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

appendはを返しますNone

あなたの例から:

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