为什么说str和None是不可变变量?

请各位大佬解惑

holdtom
浏览 844回答 2
2回答

千万里不及你

首先更正:str 是类(或者你叫类型也行),而 None 是 NoneType 类的对象简而言之,不可变就是你不能去修改它的值。那 None 自不用说,他是 NoneType 类的对象,并且无法修改它的值;对于 str 类的对象,str 类没有提供任何方法去修改一个对象的值,那些会修改值的方法都是新生成了一个 str 对象。所以,这些对象都是不可变的。下面是官方文档的描述:An object with a fixed value. Immutable objects include numbers, strings and tuples. Such an object cannot be altered. A new object has to be created if a different value has to be stored. They play an important role in places where a constant hash value is needed, for example as a key in a dictionary.

www说

一楼说的对, 不过我补充一下, 当你修改一个字符串, 简单地说, python虚拟机会有两个动作: (1).创建一个新字符串(就是你需要的那个, 在原字符串基础上修改的那个), (2).接着把你新字符串的引用(相当于C语言的指针)传递给字符串变量, 我也不知道我表达清楚了吗, 你可以参考《python源码剖析》这本书
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python