Why does a string need an assignment operator to change it, but a list doesn't?
本问题已经有最佳答案,请猛点这里访问。
我不明白为什么在这个例子中,使用.lower()方法不会在没有赋值的情况下更改字符串,但是.reverse()方法会在没有赋值的情况下更改列表。某些数据类型是否需要赋值才能更改,而其他数据类型则不需要?为什么?谢谢。
1 2 3 4 5 6 7 8 | a ="ABC" a.lower() b = [1, 2, 3] b.reverse() print(a) print(b) |
Do certain data types need assignment to change, and others don't?
对。
Why?
因为这是每种类型提供的API的一部分。
有些类型的对象(如列表)提供了改变其数据的方法(如
(从技术上讲,在上面的示例中,您永远不会"更改"字符串。相反,您可以创建一个新字符串,并将其分配给用于指向旧字符串的变量。这与列表示例中更改实际列表对象的重要方法不同。通过搜索可变对象和不可变对象的讨论,您可以找到许多关于差异的信息。)