跳转至

字符串的不可变性

在 Python 中,每一个对象都可以分为不可变性或者可变性。在核心类型中,数字、字符串和元组是不可变的

字符串在 Python 中一旦创建就不能就地改变,例如不能对其某一位置进行赋值而改变字符串。下面的语句就会出现如下语法错误:“TypeError: 'str' object does not support item assignment”。

s = 'string'
print(len(s))
print(s[0])                 # 输出序列的第一个元素
s[0] = 'another s'          # 试图修改字符串的内容
print(s)

关于不可变性,我们再看一个例子:

>>> str1 = "welcome"
>>> str2 = "welcome"

上述代码中,str1str2 都指向存储在内存中某个地方的字符串对象"welcome"。我们可以通过id() 函数来测试 str1str2 是否真的指向同一个对象。

id() 函数可以得到对象在内存中的存储地址。

如下:

>>> str1 = 'welcome'
>>> str2 = 'welcome'
>>> id(str1)
35462112
>>> id(str2)
35462112

我们可以看到,str1str2 都指向同一个内存地址,因此,他们都指向同样的对象“welcome”。下面让我们再编辑 str1 的内容看看:

>>> str1 += " yangjh"
>>> str1
'welcome yangjh'
>>> id(str1)
35487600

我们可以看到,现在变量 str1 指向了一个完全不同的内容地址,这也说明,我们对 str1 的内容操作实际上是新建了一个新的字符串对象。


最后更新: 2022年10月15日 01:02:48
创建日期: 2022年9月5日 00:56:03
Contributers: yangjh