请各位大佬解惑
一楼说的对, 不过我补充一下, 当你修改一个字符串, 简单地说, python虚拟机会有两个动作: (1).创建一个新字符串(就是你需要的那个, 在原字符串基础上修改的那个), (2).接着把你新字符串的引用(相当于C语言的指针)传递给字符串变量, 我也不知道我表达清楚了吗, 你可以参考《python源码剖析》这本书
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
首先更正:str 是类(或者你叫类型也行),而 None 是 NoneType 类的对象
简而言之,不可变就是你不能去修改它的值。那 None 自不用说,他是 NoneType 类的对象,并且无法修改它的值;对于 str 类的对象,str 类没有提供任何方法去修改一个对象的值,那些会修改值的方法都是新生成了一个 str 对象。
所以,这些对象都是不可变的。
下面是官方文档的描述: