2

如果一个python字符串是不可变的,如何改变如下:

  a = "abc"
  print a
  a = "cde"
  print a

输出:

abc
cde

这实际上是在创建一个新变量并将 a 更改为指向该变量吗?

4

3 回答 3

5

Python 字符串不可变的。您所做的只是a用两个不同的字符串重新分配变量,这与不变性无关。

在显示的代码中没有创建新变量,只有a. 并且在分配中,a每次都指向不同的字符串。要查看字符串是不可变的,请查看以下示例:

a = 'abxde'
b = a.replace('x', 'c')

a
=> 'abxde'

b
=> 'abcde'

如您所见,该方法a没有修改replace(),而是该方法创建了一个新字符串,我们将其分配给b,这就是替换字符串结束的地方。所有执行更改的字符串方法都是这样:它们不会就地修改原始字符串,它们会创建并返回一个新字符串。

于 2013-06-23T21:49:42.930 回答
1
  • 是的,在 Python 中,字符串是不可变的
  • 您的代码没有创建新变量
  • 您的代码为变量分配a对另一个字符串的引用
于 2013-06-23T21:49:13.653 回答
1

它正在创建一个新对象并更改a为指向新对象。

于 2013-06-23T21:49:29.170 回答