我和我的翻译工作,找出了Python append()
方法的行为,结果发现:因为我觉得这让我为难,意外行为list.append
In [335]: b = [].append(1)
In [336]: b
In [337]:
In [337]: b = [].append('1')
In [338]: b
,每当我们称之为append()
名单上,我们添加新对象到其结束,所以不应该对空列表调用append()
(如我上面所说的那样)给我同样的结果,我可以有实现:
In [339]: b=[]
In [340]: b.append(1)
In [341]: b
Out[341]: [1]
我可能有一种误解,在这里,所以请更正我如果我错了。
哦对。嗯,有没有什么理由说'apppend()'返回'None'是好的?是因为,就像在第二个例子中,当我做了'b.append()',如果append()'没有返回'None',那么它会修改'b'的类型并改变它的值?因为现在看来,如果'append()'总是返回'None',那么在'b'上调用'append()'也会导致'b'的值更改为'None',即使在第二个例。我的误解是什么? – AKKO 2014-12-05 03:47:05
我相信它的基本原理是它强制简单和明确。你必须一次做一件事,避免大量的意大利面陈述和副作用。 – tripleee 2014-12-05 04:29:29
@AKKO - 那你必须向Python核心开发者询问为什么'append()'返回'None'的确切原因。这只是一个设计决定。我猜想是这样,你不能把这个电话埋在另一条线内。由于'append()'改变了列表,它应该在它自己的路线上引起注意。事实上,几乎所有在Python中改变对象的方法都遵循这个约定并返回None。 – iCodez 2014-12-05 15:54:25