Python每天3分钟 – #036Python的immutable对象

欢迎访问Python每天3分钟系列。

每天花3分钟时间,学习或温习一个Python知识点。

图片

今天是第036篇:

Python的immutable对象

immutable – 山盟海誓永不改变

在编程的世界里有一对单词很重要,小白也许不知道,但是高手都知道。它们就是mutableimmutable

immutable的意思是不可修改的;mutable的意思就是可以修改的。

有些编程语言特意设计成了变量默认情况下不可修改,比如这两年大热门的Rust语言就是这样的。还有好多其他语言使用了同样的设计。

为什么要这样呢?因为编程语言对于可变数据与不可变数据用不同的处理方式,不可变的数据的处理要快的多,也安全的多。

如果你爱上了一个他或她,你知道TA天生设计就是不会改变的,一旦和你好了,不会再和别人好。那可是很省心的,你走遍天涯也不怕,不管传给了什么函数,或者在很多函数之间传递了几百次,这都不要紧,因为TA不会变心的!

相反,如果你的爱人非常善变,他遇到了别人可能会轻易被改变,那恐怕你要累死了。隔壁老王轻松改变TA。哎,这样的人生太累了。

用爱人去对比编程语言也许不是最合适的,但我相信你可以更好的从感情上理解immutable的好处。

Python的immutable对象

Python也知道immutable的好处,所以Python也有一些对象是immutable的,它们包括:

  • 整数int
  • 浮点数float
  • 字符串str
  • 布尔值bool
  • 元组tuple

immutable意味着一旦创建,永不改变。

等等!麦叔,那你怎么解释下面的代码?

name = '麦叔'
name = '麦叔2'

这个代码明明改变了name啊!

很好的问题!

注意:immutable的是对象,不是变量。变量是指向对象的指针,可以随时改变。但是immutable的对象一旦创建就不会改变。

在上面的例子中,先有一个字符串对象麦叔,这个对象没有改变。当name编程麦叔2的时候,Python创建了一个新的对象,而不是改变原来的对象。

我们可以证明一下:

name = '麦叔'
print(id(name))
name = '麦叔2'
print(id(name))

打印结果:

4300612176
4300612272

看到了吗?两个地址是不同的。这说明是两个完全不同的对象。明白了吗?

那mutable对象有哪些呢?且听下回分解!

原文链接:https://www.zsiss.com/5332.html,转载请注明出处。

0

评论0

请先

爱分享推出ChatGPT国内镜像,无需魔法直接用!写文章,写代码,做PPT,做网站原创软文效果好到爆炸 https://chat.gcrup.com

社交账号快速登录