请各位大佬解惑
2 回答
千万里不及你
TA贡献1784条经验 获得超9个赞
首先更正: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说
TA贡献1775条经验 获得超8个赞
一楼说的对, 不过我补充一下, 当你修改一个字符串, 简单地说, python虚拟机会有两个动作: (1).创建一个新字符串(就是你需要的那个, 在原字符串基础上修改的那个), (2).接着把你新字符串的引用(相当于C语言的指针)传递给字符串变量, 我也不知道我表达清楚了吗, 你可以参考《python源码剖析》这本书
添加回答
举报
0/150
提交
取消