在理解其中一种python数据类型时存在问题


x = "hello, world"
print(x.replace("h","j")

因此,从这段代码中,您可以将字母h更改为j,这意味着它是可变的

,这意味着它是可变的

不,Python字符串是不可变的。str.replace(和任何其他字符串方法(返回一个新字符串。

如果字符串是可变的,那么下面的代码

x = "hello, world"
x.replace("h","j")
print(x)

将输出jello, world(它没有(。

这并不意味着字符串是可变的,而是意味着我们正在replace方法中创建一个新的字符串。

>>> a= "ababa"
>>> id(a)
48421600L
>>> id(a.replace('a','c'))
48419776L
>>>

从字符串的id可以看出,它们是两个不同的字符串。也可以使用is运算符进行比较。

字符串在python中是不可变的。

>>> x = 'hello, world'
>>> x
[OUT]: 'hello, world'
>>> id(x)
[OUT]: 4400926320
>>> x = x.replace('h','j')
>>> x
[OUT]: 'jello, world'
>>> id(x)
[OUT]: 4402216304

当您试图修改字符串对象的值时,它会指向内存中具有不同位置的新字符串,因为字符串是不可变的。id(x(返回x的内存地址。

最新更新