2013-01-10 20 views
9

はなぜこの仕事ん -[] .append()はなぜPythonでは動作しませんか?

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

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

print [].append(4) 

秒場合の出力はNoneです。出力を説明できますか?

+2

あなたが印刷a.appendを行う場合(4)あなたもなし –

+2

やれやれを入手! Pythonコミュニティは稲妻であり、とても役に立ちます。 :-) みんなありがとう。 –

答えて

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 

を「宇宙で失われた」です。

+0

しかし、それは機能的なスタイルではありません。操作したオブジェクトを返してはいけませんか? –

+0

5秒間に殴られて... * sigh * – Makoto

+1

いいえ、 'a'は変更可能で、値は変更されています。返されるものはありません。 – adarsh

1

値を返さない、または他の言葉でのみNone

aが可変であり、それの値が変更されたがあるだろうappend方法、が返されるものは何もありません。

1

追加はNoneを返します。あなたの例から

>>> print a.append(4) 
None 
関連する問題