Python的数据模型

一、对象、值和类型


对象是Python对于数据的抽象,Python中的所有数据均通过对象或对象间的关系进行表示。


每个对象都有其标识符(identity)、类型和值,其中标识符和类型是不可变的,而有些对象的值可以改变。可以把对象的标识想像为对象在内存的中起始地址,因此,一旦对象创建后,其标识将不再会改变。内建函数id(Obj)返回对象的标识,而is操作符可以比较两个对象的标识是否相同。对象的类型决定了对象支持的操作以及相应类型的对象所可能的取值,内建函数type()能够返回指定对象的类型。对象的值可变与否取决于其类型,其值可变的对象称为可变对象,否则则称为非可变对象。


有些对象可以包含其它的对象,这样的对象称为容器,如元组、列表和字典。大多数场合,当说到容器的值时通常指定的是其引用的对象的值而非对象标识,然而,提到的所谓可变容器时,其可变的是其引用的对象的标识而非对象的值。


Python的对象不能显式销毁,而是在变得不可用后由解释器的垃圾收集器自动进行回收。CPython目前通过带有延迟探测的引用计数机制的周期性垃圾收集器来进行对象回收。



二、Python的内建数据类型


None:单值类型,且Python中仅有一个名字也为None的对象其类型为None;常用于缺少一个正常值的场景中,如无返回值的函数;


NotImplemented:单值类型,且Python中仅有一个名字也为NotImplemented的对象其类型为

NotImplemented;数值方法或比较方法在执行不支持的操作时可能会返回此类型的值;


Ellipsis:单值类型,且Python中仅有一个名字也为Ellipsis的对象其类型为Ellipsis;用于表示切片语法中的省略号“...”;


数值类型:不可变类型,有整型、浮点型和复数三种子类型;整型也有三种子类型:整型、长整型和布尔型;


序列类型:指有限的索引有序数据集,可以使用内建函数len()来获取元素个数,对于长度为n的序列来说,其索引为0,1,...,n-1;序列可以划分为可变和不可变两类;

  • 不可变序列:创建后不可改变;不过,如果其元素本身如果可变,其仍可以被改变;属于不可变序列的类型有String(字符串)、Unicode和Tuples(元组)三种;

  • 可变序列:创建后其值可变,其元素可以使用del()内建函数删除;属于可变序列的类型有Lists(列表)和Byte Arrays(字节数组);


集合类型:指有限的、惟一且不可变的对象的无序集,因此无法被索引或切片,但支持迭代操作;Python中属于集合类型的类型有Sets(集合)和Frozen sets(冻结集合)两种;


映射类型:指由直接索引的有限对象集,其标记通常为m[k],其中m表示映射,k表示m的一个key;可变类型,支持del语句和len();目前Python中惟的映射类型为Dictionaries(字典);


可调用类型:指支持调用操作的类型;

  • 用户自定义函数

  • 用户自定义方法

  • 生成器函数

  • 内建函数

  • 内建方法

  • 类类型

  • 经典类

  • 类实例


模块:可由import语句导入,用于定义名称空间;


类:类类型(新式类)和类对象(老式/经典类)均由类定义语句创建,其有着自己的名称空间;


类实例:对类对象的每一次调用都会创建一个类实例;


文件:文件对象指一个打开的文件,其可由内建函数open()等创建,sys.stdin、sys.stdout和sys.stderr会初始倾听为其标准的输入、输出和错误流;


内建类型:由解释内部使用,但可以被用户获知的类型;

  • 代码对象:编译为二进制后的Python代码,即字节码;

  • 帧对象:可执行的帧,常用于回溯对象;

  • 回溯对象:指堆栈跟踪的例外,在异常发生时被创建;

  • 切片对象:对切片操作时生成的对象;

  • 静态方法对象

  • 类方法对象


转载请务必注明出处:http://mageedu.blog.51cto.com。


参考文献:Python官方文档

本文出自 “马哥Linux培训” 博客,请务必保留此出处http://mageedu.blog.51cto.com/4265610/1354929

转载于:https://my.oschina.net/magedu/blog/600993

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值