python使用对象模型来存储数据,也就是说构造任何类型的值都是一个对象。所有的python对象都拥有三个特性:身份id,类型和值。
身份id:唯一的身份标识,可以使用内建函数id()来得到,这个值可以被认为是该对象的内存地址。对象身份的比较可通过运算符is或is
not来完成,判断它们是否指向(引用)同一个对象,这里举一个有趣的例子:
>>> a = 1 >>> b = 1 >>> c = 1000 >>> d = 1000 >>> a is b True >>> c is d False >>> id(a), id(b), id(c), id(d) (11258984, 11258984, 12386056, 11594792)
可以看出,a和b指向同一个对象,但c和d却不同,这是为什么呢?这是因为,整数对象和字符串对象是不可变对象,python会很高效的缓存它们,不过整数对象仅缓存简单整数,如上面例子中的0,1000就不会缓存了。
类型:对象的类型决定了该对象可以保存什么类型的值,可以进行什么样的操作,以及遵循什么样的规则,可以用内建函数type()查看python对象的类型,也可以用isinstance(),在python中类型也是对象基本数据类型包括数字、整型、布尔型、长整型、浮点型、复数型、字符串、列表、元组和字典,还有一些其它的内建类型,它们是类型、None、文件、集合、函数、模块和类,除此之外还包括一些内部类型,即代码、帧、跟踪记录、切片(步进切片、多维切片、省略切片)、省略(省略对象有一个唯一的名字Ellipsis)、Xrange(是range()的补充)。
值:对象表示的数据项。对象值的比较除了一些常见的运算符之外,还可以使用cmp()内建函数。
上面提到的类型可按照三种不同的模型进行分类:存储模型、更新模型、访问模型。
存储模型分两种——
原子类型:数值、字符串。
容器类型:列表、元组、字典。
更新模型分两种——
可变类型:列表、字典。
不可变类型:数字、字符串、元组。
访问模型分三种——
直接访问:数字。
顺序访问:字符串、列表、元组。
映射访问:字典。
时间: 2024-10-15 20:38:27