既然Python中的字符串不能改变,那为什么这种操作可以呢?

飞天小面条
  • 14

1.>>> a=99
2.>>> b=''
3.>>> b+='abc'
4.>>> b+=str(a)
5.>>> b
'abc99'

回复
阅读 3.8k
4 个回答
✓ 已被采纳

clipboard.png

clipboard.png

这样看会不会明白一点,字符串不变指的是本身不会变化,但是指向可以发生变化。

python字符串不能变指的是本身不变,所以你不能直接b[0]=1。
而你第3、4行的结果是返回一个新的字符串,所以可以。

不能改变的意思是不会因为其他操作导致自身变化

而你这边虽然看起来都是b,但是之后是变量赋值了,上代码可能更容易明白些

a = 99
b = ''
b += 'abc'    
// 这里等价于b = b + 'abc',相当于给b重新赋值了,也就是说 b = ''然后 b = 'abc' 你说变不变?

至于不会变的情况是这样的:

a = 'abc'
a[0] = 'b'    
// 这里我们试图修改字符串a的第一个字符从a改为b,按理来说应该变成bbc,但是由于字符串的不可变性,这里并不会变化,a还是abc

你看到的改变其实是个新的东西,

就比如,盒子里面有一个苹果,现在你要放一个香蕉进去,但盒子放不下了,只能把苹果和香蕉先放到一个新盒子里面,在返回给你。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏