发布时间:2019-09-25 08:20:07编辑:auto阅读(1761)
上面三个特性在对象创建的时候就被赋值,除了值之外,其他两个特性都是只读的.对
于新风格的类型和类,对象的类型也是可以改变的,不过对于初学者并不推荐这样做.
类
类型对象和type类型对象 : 虽然看上去把类型本身也当成对象有点特别,我们还是要在这里提一提. 你一定还记得,对象的一系列固有行为和特征(比如支持哪些运算,具有哪些方法) 必须事先定义好. 从这个角度看,类型正是保存这些信息的最佳位置. 描述一种类型所需要的信息不可能用一个字符串来搞定, 所以类型不能是一个简单的字符串,这些信息不能也不应该和数据保存在一起,所以我们将类型定义成对象.
所有类型对象的类型都是type ,它也是所有Python类型的根和所有Python标准类的默认元类(metaclass) . 类就是类型,实例是对应类型的对象.
● 代码
● 帧
● 跟踪记录
● 切片
● 省略
● Xrange
代码对象 :
帧对象 :
跟踪记录对象 : 当你的代码出错时 , Python就会引发一个异常 . 如果异常未被捕获和处理,解释器就会退出脚本运行 ,处理程序就可以访问这个跟踪记录对象 .
切片对象 : 当使用Python扩展的切片语法时,就会创建切片对象. 扩展的切片语法允许对不同的索引切片操作,包括步进切片,多维切片,及省略切片 . 切片对象也可以由内建函数 slice() 来生成 . 步进切片允许利用第三个切片元素进行步进切片.
省略对象 :
比较运算符用来判断同类型对象是否相等,所有内建类型均支持比较运算,比较运算返回布尔值True 或 False .
不同于很多其他语言,多个比较操作可以在同一行上进行, 求值顺序从左到右 .
我们会注意到,比较操作是针对对象的值进行的,也就是说比较的是对象的数值而不是对象本身.
对象身份比较 : 作为对值比较的补充,Python也支持对象本身的比较. 对象可以被赋值到另一个变量(通过引用) . 因为每个变量都指向同一个(共享的) 数据对象, 只要任何一个引用发生改变, 该对象的其他引用也会随之改变 .
is is not : Python提供了is 和is not 运算符来测试两个变量是否指向同一个对象(对象身份).
核心提示 : 小整数池 .
布尔类型 : not 运算符拥有最高优先级, 只比所有运算低一级. and 和 or 运算符则相应的再低一点.
type() : 接收一个对象作为参数,并返回它的类型, 它的返回值是一个类型对象 . 对type()的返回值再次调用type() ,注意type() 有趣的输出 .
核心笔记 : 在Python学习过程中, 偶尔会遇到某个运算符和某个函数是做同样一件事情 ,之所以如此是因为某些场合函数会比运算符更适合使用. 函数比表达式用起来方便 .
type() 和isinstance() : Python不支持方法或函数重载,因此你必须自己保证调用的就是你想要的函数或对象 . type() 函数可以做到这一点 . isinstance 来判断某个对象是否是某个类的实例. 返回True 或 False .
如果让我们最啰嗦的描述标准类型, 我们也许会称他们是Python的基本内建数据对象原始类型 .
存储模型 : 我们队类型进行分类的第一种方式 ,就是看看这种类型的对象能保存多少个对象. Python的类型,就像绝大多数其他语言一样,能容纳一个或多个值.一个能保存单个字面对象的类型我们称它为院子或标量存储.那些可容纳多个对象的类型,我们称之为容器存储.(容器对象有时会在文档中被称为复合对象,不过这些对象并不仅仅指类型,还包括类似实例这样的对象)容器类型又带来一个新问题,那就是它是否可以容纳不同类型的对象. 所有的Python容器对象都能够容纳不同类型的对象.字符串看上去看一个容器类型,因为它"包含"字符(并且经常多余一个字符),不过由于Python并没有字符类型,所以字符串是一个自我包含的文字类型.
更新模型 : 另一种对标准类型进行分类的方式就是,针对每一个类型问一个问题:'对象创建成功之后,它的值可以进行更新么 ? 某些类型允许他们的值进行更新,而另一些则不允许 . 可变对象允许他们的值被更新,而不可变对象则不允许他们的值被更改 .
为什么i = 0 ,i = i + 1 , i为什么等于1 . 不是说数值和字符串对象是不可改变的么 ? 事实上,这里是一个新对象被创建,然后它取代了旧对象. 通过id()函数就可以很清楚的看到对象实际上已经被替换了.
访问类型 :尽管前面两种模型分类方式在介绍Python时都很有用,他们还不是区分数据类型的首要模型. 对这种目的,我们使用访问模型.也就是说根据访问外面存储的数据的方式对数据类型进行分类.在访问模型中共有三种访问方式 : 直接存取,顺序,和映射 .
7.为什么要用这么多不同的模型或从不同的方面来分类 ? 所有这些数据类型看上去是很难分类的.他们彼此都有着错综复杂的关系,所有类型的共同之处最好能揭示出来,而且我们还想揭示每种类型的督导之处.没有两种类型横跨所有的分类. (当然,所有 的数值子类型能刀座了这一点,所以我们将它们归纳到一类当中) .最后我们确信搞清楚所有类型之间的关系会对你的开发工作有极大的帮助.你对每种类型了解越多,你就越能在自己的程序中使用恰当的类型以达到最佳的性能.
8.不支持的类型
上一篇: 图解Python变量与赋值
下一篇: Python3网络爬虫实战-3、数据库的
47768
46278
37155
34658
29248
25909
24781
19883
19444
17938
5734°
6339°
5856°
5905°
7009°
5844°
5865°
6375°
6335°
7701°