为什么这个能够运作 -
但这并不意味着 -
第二种情况的输出是
a = []
a.append(4)
print a
但这并不意味着 -
print [].append(4)
第二种情况的输出是
None
。你可以解释一下这个输出吗?a = []
a.append(4)
print a
print [].append(4)
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
我没有重载所有相关方法,但概念应该是清楚的。
a
是可变的,它的值已经被改变了,没有什么需要返回的。 - adarsh[] + [4]
而不是append。请注意,这将创建一个新对象。 - Jonas Schäferlist
像一个持久化数据结构并不好用,有更好的替代品。 - user395760list.append()
返回 None
,这样如果你假设正在复制列表,则会“快速失败”。最好捕获意外的 None
结果,而不是在完全没有预料到的情况下处理指向同一对象的两个变量! - kindallappend 返回 None
。
从你的例子中:
>>> print a.append(4)
None
append
方法没有返回值,换句话说,它只会返回 None
。
a
是可变的,它的值被改变了,因此没有什么需要返回的。