【发布时间】:2016-10-29 15:19:59
【问题描述】:
我是python新手,我只是发现了一些奇怪的东西:
>>> test="acdefg"
>>> test.replace('a','h')
'hcdefg'
>>> test
'acdefg'
>>> test=[1,2,3]
>>> test.reverse()
>>> test
[3, 2, 1]
如你在代码中看到的,第一次,变量“test”是一个字符串,当我调用方法“replace”时,“test”的值没有改变,第二次是一个列表,并且在我调用方法 reverse() 后列表发生了变化。
那是为什么?是因为方法之间的不同还是对象之间的不同或其他原因?
【问题讨论】:
-
Python 字符串是不可变的。列表不是。
-
那么它是关于对象的属性或方法的属性或两者兼而有之?
-
@Statham 你看我的回答了吗?它回答了这个问题。
-
对象的属性决定了方法的实现。这只是通常需要阅读文档或尝试小示例来确定行为的事情之一
-
@idjaw 是的,我已经读过了,现在我知道了。 “不可变”对我来说有点奇怪,因为我首先学习了 C,其中任何东西都可以通过简单的分配来改变。但现在我确定我不应该假定 Python 具有与 C 相同的属性:p