本篇参考Python官方文档,3. Data model — Python 3.5.2 documentation
下面是原文翻译过来的:
对象 是Python对数据的抽象。Python程序程序中所有的数据都用对象或者对象之间的关系表示。(在某种意义上,与冯诺依曼的“程序存储计算机”模型相一致,代码也由对象表示)
每个对象都有一个身份(identity),类型和值。一个对象的身份从创建开始就不会改变。你可以吧它理解成内存中的一个地址。’is’操作符比较两个对象的身份,id()函数返回一个表示身份的整数。
一个对象的类型决定这个对象支持什么操作(比如,“它有长度吗?”),它还定义了这个类型所有可能的值。type()函数返回一个对象的类型(也就是对象本身)。像它的身份一样,一个对象的类型也不可改变(unchangeable)。
某些对象的值可以改变。值可以改变的对象被称为可变的(mutable);值自创立起就不能改变的对象被称为不变的(immutable)。(一个不变的、含有一个可变对象的引用的容器对象(container)的值可以改变当后者的值被改变;然而这个容器仍然被视为不可变,因为它含有的集合对象不能被改变。所以,不可变性不是严格地跟有一个不能被改变的值一样,不可变性更微妙。)一个对象的可变性由它的类型决定;比如,数字,字符串和元组是不可变的,字典和链表是可变的。
对象从不是被显式的销毁。然而,当它们变得不能接触(unreachable)它们可能被当做垃圾回收。
这几段定义了对象,身份,类型和值。其中值还没有说明白,值可以理解为内存块实际包含的信息。还有个概念这里没提到,就是标识符(identifier),在Python里,标识符跟名字(name)是同义词。同样在Python里