Why some methods change the object permanently while others don't?
本问题已经有最佳答案,请猛点这里访问。
当我在列表上使用
1 2 3 4 5 6 | >>> numbers [3, 1, 2] >>> numbers.sort() >>> numbers [1, 2, 3] >>> |
另一方面,例如,当我对字符串使用
1 2 3 4 5 6 7 | >>> string ' foo ' >>> string.strip() 'foo' >>> string ' foo ' >>> |
为什么会这样?它是否仅仅取决于方法是如何构建的?
Does it depend on simply how the method is built?
我想你可以说"是",但是就地方法——那些有"永久"变化的方法——通常在
可变对象可以在其生命周期中更改其值,这意味着当调用这些方法时,返回新对象没有任何意义。
另一方面,返回新对象的方法用于不可变对象。不可变表示对象具有固定值,不能更改。因此,就地方法无法工作,因为它们需要更改对象的值,而这对于不可变的对象是不可能的。这就是为什么这些方法返回一个新的对象,这个对象通常被分配回它最初绑定到的名称,从而产生了可变性的效果。