为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

holdtom 2019-02-07 10:10:20
请各位大佬解惑
查看完整描述

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.


查看完整回答
反对 回复 2019-02-19
?
www说

TA贡献1775条经验 获得超8个赞

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

查看完整回答
反对 回复 2019-02-19
  • 2 回答
  • 0 关注
  • 842 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信