なぜこれが機能するのですか?
a = []
a.append(4)
print a
しかし、これはしません-
print [].append(4)
2番目の場合の出力はですNone
。出力を説明できますか?
なぜこれが機能するのですか?
a = []
a.append(4)
print a
しかし、これはしません-
print [].append(4)
2番目の場合の出力はですNone
。出力を説明できますか?
この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
問題のすべてのメソッドをオーバーロードしたわけではありませんが、概念は明確である必要があります。
このメソッドappend
は値を返しません。つまり、値が返されるだけです。None
a
は可変であり、その値が変更された場合、そこに返されるものはありません。
appendはを返しますNone
。
あなたの例から:
>>> print a.append(4)
None