详细讨论Python的数据模型和对象模型

数据模型==对象模型Python官方文档说它是“ Python数据模型”,大多数Python书作者说它是“ Python对象模型”,意思是“计算机编程语言中对象的属性”。

这句话有点抽象,只要您知道对象是Python的数据抽象,Python中的所有对象都是对象。

正式文件严格规定,Python程序中的所有数据均由对象或对象之间的关系表示。

对象的三个元素一个对象具有三个元素:标识,类型和值。

标识号是对象的内存地址,创建后将不会更改。

is运算符用于比较两个对象的数量。

id()函数返回对象号的整数表示。

身份也可以翻译为身份,对象身份。

类型确定可以对对象执行哪些操作,还定义对象的可能值。

例如,int和bool的值是不同的。

type()函数返回对象类型。

许多人错误地认为Python是一种弱类型的语言。

实际上,Python是一种强类型语言。

造成这种误解的真正原因是,不需要编译Python,也不需要事先知道变量的类型。

在运行时检查类型。

这应该称为动态语言。

JavaScript是一种弱类型语言。

在Python中,1 +“ 2”表示将无法运行,但可以在JavaScript中成功运行。

创建后,类型将不会更改。

尽管可以执行类型转换,但转换实际上会产生一个新对象:结果是:在值对象的三个元素中唯一可以更改的是值。

官方网站上有一个正确的废话:允许更改值的对象是可变的(可变的),而不允许更改值的对象是不可变的。

它的意义是当不可变对象的值是对可变对象的引用时,如何判断该对象的可变性?结论是不可变对象仍然是不可变的,因为不能更改此引用,但是我们通常认为该不可变对象的值是可变的,尤其是对象容器。

对象类型还确定它是否可变。

例如,数字,字符串和元组是不可变的,字典和列表是可变的。

对象容器一些对象包含对其他对象的引用,这些对象称为容器对象容器,例如元组,列表,字典。

在大多数情况下,当我们谈论容器的值时,我们谈论的是被引用对象的值,而不是引用号。

但是,在讨论容器可变性时,它仅是指直接包含在容器中的参考数字。

例如,元组是不可变的。

如果它包含对可变对象的引用,则当可变对象更改时,容器的值也将更改。

对象收集对象不会被明确销毁,但会将它们视为垃圾收集。

只要没有对象引用,这就是Python垃圾回收机制!垃圾回收机制更加复杂,例如循环引用(实际上不再使用了循环引用),但仍然存在涉及算法规则的引用。

在完成了Python的高级编写之后,我们将在编写Python原理时做进一步的研究。

Python垃圾回收机制不是灵丹妙药,不能解决所有问题。

因此,在引用外部资源(例如打开文件)之后,我们需要注意显式关闭,以防止资源始终占用内存并且无法释放,从而导致内存泄漏。

除了手动调用close()方法外,还可以使用with来自动关闭。

使用try ... .except可能会使对象继续存在。

类型决定了所有对象的类型,几乎决定了对象的所有行为,甚至是对象编号。

例如,对于不可变类型:a = 1b = 1a和b可以指向值为1的同一对象,或者它们可以指向两个不同的对象。

根据具体实现,其值为1的对象。

但是对于变量类型:c = [] d = [] c和d必须指向两个不同的单独的空列表。

请注意,c = d = []将相同的对象分配给c和d。

简介Python数据模型通常称为对象模型。

一切都是对象,具有三个元素:数字,类型和值。

了解对象模型后,Python的另一个重要概念即将出现,即数据结构。

负责编辑AJX