Python核心编程读书笔记(3)

来源:互联网 发布:中国乘用车销量数据 编辑:程序博客网 时间:2024/05/16 10:31

本次笔记针对原书第4章节

 

第四章:Python对象

 

1、Python 使用对象模型来存储数据。构造任何类型的值都是一个对象。

 

2、所有的 Python 对像都拥有三个特性:身份,类型和值。 

     身份:每一个对象都有一个唯一的身份标识自己, 任何对象的身份可以使用内建函数id()来得到。这个值可以被认为是该对象的内存地址。

     类型:对象的类型决定了该对象可以保存什么类型的值,可以进行什么样的操作,以及遵循什么样的规则。用内建函数type()查看 Python 对象的类型。因为在 Python 中类型也是对象,所以 type()返回的是对象而不是简单的字符串。 

     值:对象表示的数据项。

 

3、Python 的标准类型

     数字、整型、布尔型、长整型、浮点型、复数型、字符串、列表、元组、字典

 

4、其他内建类型

     类型、Null对象(None)、文件、集合/固定集合、函数/方法、模块、类

 

5、通过调用type()函数,能够得到特定对象的类型信息。

 

6、所有类型对象的类型都是type,它也是所有 Python 类型的根和所有 Python 标准类的默认元类(metaclass)。

 

7、Python 有一个特殊的类型, 被称作 Null 对象或者 NoneType,它只有一个值,那就是 None。它不支持任何运算也没有任何内建方法。

 

8、所有标准对象均可用于布尔测试,同类型的对象之间可以比较大小。

 

9、下列对象的布尔值是 False :

  • None
  • False
  • 所有的值为零的数:0(整型)、0.0(浮点型)、0L(长整型)、0.0+0.0j(复数)、""(空字符串)、[](空列表)、()(空元组)、{}(空字典)

10、内部类型

       代码、帧、跟踪记录、切片、省略、Xrange

 

11、代码对象是编译过的 Python 源代码片段,它是可执行对象。通过调用内建函数compile()可以得到代码对象。代码对象可以被exec命令或eval()内建函数来执行。代码对象本身不包含任何执行环境信息,它是用户自定义函数的核心,在被执行时动态获得上下文。

 

12、帧对象表示 Python 的执行栈帧。帧对象包含 Python 解释器在运行时所需要知道的所有信息。它的属性包括指向上一帧的链接,正在被执行的代码对象(参见上文),本地及全局名字空间字典以及当前指令等。

 

13、当异常发生时,一个包含针对异常的栈跟踪信息的跟踪记录对象被创建。

 

14、当使用 Python 扩展的切片语法时,就会创建切片对象。

 

15、省略对象用于扩展切片语法中,起记号作用。省略对象有一个唯一的名字Ellipsis, 它的布尔值始终为 True。

 

16、调用内建函数xrange()会生成一个 Xrange 对象, xrange()是内建函数range()的兄弟版本, 用于需要节省内存使用或 range()无法完成的超大数据集场合。

 

17、对象值的比较:比较运算符用来判断同类型对象是否相等,所有的内建类型均支持比较运算,比较运算返回布尔值 True 或 False。

 

18、对象身份比较:作为对值比较的补充,Python 也支持对象本身的比较。is 与 not 标识符都是 Python 关键字。

 

19、整数对象和字符串对象是不可变对象,所以 Python 会很高效的缓存它们。

 

20、布尔逻辑运算符 and, or 和 not 都是 Python 关键字。

 

21、标准类型运算符:1)对象值的比较 2)对象身份的比较 3)布尔操作

 

22、标准类型内建函数

              函数                                   功能
       cmp(obj1, obj2)      比较 obj1 和 obj2, 根据比较结果返回整数 i: 

                                                i < 0 if obj1 < obj2 

                                                i > 0 if obj1 > obj2 

                                              i == 0 if obj1 == obj2 

      repr(obj) 或 `obj`    返回一个对象的字符串表示 

             str(obj)             返回对象适合可读性好的字符串表示 

           type(obj)             得到一个对象的类型,并返回相应的 type 对象

 

23、type() 接受一个对象做为参数,并返回它的类型。它的返回值是一个类型对象。

 

24、内建函数cmp()用于比较两个对象 obj1 和 obj2,如果 obj1 小于 obj2, 则返回一个负整数,如果obj1大于obj2则返回一个正整数,如果obj1等于obj2,则返回0。

 

25、内建函数 str() 和 repr() 或反引号运算符(``) 可以方便的以字符串的方式获取对象的内容、类型、数值属性等信息。str()函数得到的字符串可读性好,而 repr()函数得到的字符串通常可以用来重新获得该对象。

 

26、str() 致力于生成一个对象的可读性好的字符串表示,它的返回结果通常无法用于 eval()求值,但很适合用于 print 语句输出。

 

27、Python 不支持方法或函数重载,因此你必须自己保证调用的就是你想要的函数或对象。

 

28、标准类型运算符和内建函数总结

 

 

29、所有的内建类型都是类。原先的内建转换函数象int(), type(), list() 等等其实都成为了工厂函数。

 

30、标准类型的分类
“基本” 是指这些类型都是 Python 提供的标准或核心类型
“内建” 是由于这些类型是 Python 默认就提供的
“数据” 因为他们用于一般数据存储
“对象” 因为对象是数据和功能的默认抽象 
“原始” 因为这些类型提供的是最底层的粒度数据存储
“类型” 因为他们就是数据类型

 

31、一个能保存单个字面对象的类型被称为原子或标量存储,那些可容纳多个对象的类型,被称为容器存储。

 

32、以存储模型为标准的类型分类 
       分类             Python 类型
  标量/原子类型     数值(所有的数值类型) ,字符串(全部是文字)
    容器类型         列表、元组、字典

 

33、可变对象允许他们的值被更新,而不可变对象则不允许他们的值被更改。新创建的对象被关联到原来的变量名,旧对象被丢弃,垃圾回收器会在适当的时机回收这些对象。

 

34、以更新模型为标准的类型分类
      分类           Python 类型
   可变类型        列表, 字典
  不可变类型      数字、字符串、元组

 

35、在访问模型中共有三种访问方式:直接存取,顺序,和映射。

  1. 对非容器类型可以直接访问。所有的数值类型都归到这一类。
  2. 序列类型是指容器内的元素按从 0 开始的索引顺序访问。一次可以访问一个元素或多个元素,也就是大家所了解的切片(slice)。字符串,列表和元组都归到这一类。
  3. 映射类型类似序列的索引属性,不过它的索引并不使用顺序的数字偏移量取值, 它的元素无序存放,通过一个唯一的 key 来访问,这就是映射类型,它容纳的是哈希键-值对的集合。

36、以访问模型为标准的类型分类
       分类                  Python 类型
      直接访问             数字
      顺序访问             字符串、列表、元组
      映射访问             字典

 

37、不支持的类型

  1. char 或 byte
  2. 指针:在 Python 中, 一切都是指针。
  3. Python 的普通整数相当于标准整数类型,不需要类似 C 语言中的 int, short, long 这三种整数类型。
  4. Python 的浮点类型实际上是 C 语言的双精度浮点类型。

 

 

原创粉丝点击