转载自 http://blog.csdn.net/hunter8777/article/category/786856

本次笔记针对原书1~2章节

第一章:欢迎来到Python的世界

1、在C语言中,对于混杂数组(Python 中的列表)和哈希表(Python 中的字典)还没有相应的标准库,所以它们经常被重复实现,并被复制到每个新项目中去。这个过程混乱而且容易产生错误。C++使用标准模版库改进了这种情况,但是标准模版库是很难与 Python 内建的列表和字典的简洁和易读相提并论的。

2、标准版本的Python是用C来编译的,又叫CPython。

3、Python源文件通常用.py扩展名。当源文件被解释器加载或者显式地进行字节码编译的时候会被编译成字节码。由于调用解释器的方式不同,源文件会被编译成带有.pyc 或.pyo 扩展名的文件。

第二章:Python起步

4、print语句调用str()函数显示对象,而交互式解释器则调用repr()函数来显示对象。

5、在学习Python 的过程中,如果需要得到一个生疏函数的帮助,只需要对它调用内建函数help()。通过用函数名作为 help()的参数就能得到相应的帮助信息。

6、下划线( _ )在解释器中有特别的含义,表示最后一个表达式的值。

7、从用户那里得到数据输入的最容易的方法是使用raw_input()内建函数。它读取标准输入,并将读取到的数据赋值给指定的变量。

8、内建函数int()将数值字符串转换成整数值。

9、Python有两种除法运算符,单斜杠用作传统除法,双斜杠用作浮点除法(对结果进行四舍五入)。

10、乘方运算符, 双星号(**)。

11、Python 不支持C语言中的自增1和自减1运算符,这是因为+和-也是单目运算符,Python 会将--n解释为-(-n)从而得到n , 同样++n的结果也是n。

12、Python支持五种基本数字类型:int、long、bool、float、complex。其中有三种是整数类型。

13、用索引运算符( [ ] )和切片运算符( [ : ] )可以得到子字符串。字符串有其特有的索引规则:第一个字符的索引是0,最后一个字符的索引是-1。

14、加号( + )用于字符串连接运算,星号( * )则用于字符串重复。

15、字符串slice方法可以使用[::-1]实现逆序输出。

16、可以将列表和元组当成普通的“数组”,列表元素用中括号( [ ] )包裹,元素的个数及元素的值可以改变。元组元素用小括号( ( ) )包裹,不可以更改(尽管他们的内容可以)。元组可以看成是只读的列表。

17、代码块通过缩进对齐表达代码逻辑而不是使用大括号,因为没有了额外的字符,程序的可读性更高。

18、print 语句默认会给每一行添加一个换行符。只要在 print 语句的最后添加一个逗号( , ),就可以省略这个换行符。

19、range() 函数经常和 len() 函数一起用于字符串索引。

显示每一个元素及其索引值:

>>> foo = 'abc' 
       >>> for i in range(len(foo)): 
       ... print foo[i], '(%d)' % i 
       ... 
       a (0) 
       b (1) 
       c (2)

20、 即想循环索引,又想循环元素,使用enumerate()。

>>> for i, ch in enumerate(foo): 
        ... print ch, '(%d)' % i 
        ... 
        a (0) 
        b (1) 
        c (2)

21、文件读取函数handle = open(file_name, access_mode = 'r') ,access_mode 中 'r' 表示读取,'w' 表示写入, 'a' 表示添加。其它可能用到的标声还有 '+' 表示读写, 'b'表示二进制访问. 如果未提供 access_mode , 默认值为 'r'。

22、要给你的代码添加错误检测及异常处理,只要将它们封装在 try-except 语句当中。

try: 
           filename = raw_input('Enter file name: ') 
           fobj = open(filename, 'r') 
           for eachLine in fobj: 
               print eachLine, fobj.close() 
       except IOError, e: 
           print 'file open error:', e 
       程序员也可以通过使用 raise 语句故意引发一个异常。

23、如果函数中没有 return 语句, 就会自动返回 None 对象。

24、Python 是通过引用调用的。这意味着函数内对参数的改变会影响到原始对象。不过事实上只有可变对象会受此影响,对不可变对象来说,它的行为类似按值调用。

25、__init__() 可以被当成构建函数, 不过不象其它语言中的构建函数,它并不创建实例--它仅仅是你的对象创建后执行的第一个方法。它的目的是执行一些该对象的必要的初始化工作。

26、什么是 self ? 它是类实例自身的引用。

27、self.__class__引用实际的类。

28、模块是一种组织形式, 它将彼此有关系的 Python 代码组织到一个个独立文件当中。 模块可以包含可执行代码, 函数和类或者这些东西的组合。

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

第三章: Python基础

1、一个语句不使用反斜线也可以跨行有两种例外情况。在使用闭合操作符时,单一语句可以跨多行,例如:在含有小括号、中括号、花括号时可以多行书写。另外就是三引号包括下的字符串也可以跨行书写。

2、要在使用反斜线换行和使用括号元素换行作一个选择,推荐使用括号。

3、如果你的代码要跨平台应用,或者会被不同的编辑器读写,建议不要使用制表符,采用缩进四个空格宽度。当使用制表符Tab的时候,请记住不同的文本编辑器对它的设置是不一样。推荐不要使用Tab,如果您的代码会存在并运行在不同的平台上,或者会用不同的文本编辑器打开,推荐不要使用Tab。

4、分号( ; )允许将多个语句写在同一行上,语句之间用分号隔开,而这些语句也不能在这行开始一个新的代码块。

5、每一个Python脚本文件都可以被当成是一个模块。

6、在Python语言中,对象是通过引用传递的。在赋值时,不管这个对象是新创建的,还是一个已经存在的,都是将该对象的引用(并不是值)赋值给变量。

7、Python的赋值语句不会返回值。

8、Python不支持类似 x++ 或 --x 这样的前置/后置自增/自减运算。

9、将多个变量同时赋值的方法我们称为多元赋值(multuple) 。采用这种方式赋值时,等号两边的对象都是元组。
     >>> x, y, z = 1, 2, 'a string'

10、Python的多元赋值方式可以实现无需中间变量交换两个变量的值。
     # swapping variables in Python 
     >>> x, y = 1, 2 
     >>> x, y = y, x

11、关键字列表和iskeyword()函数都放入了keyword模块以便查阅。

12、built-in 不是关键字,但是应该把它当作“系统保留字”,不做他用。Python不支持重载标识符,所以任何时刻都只有一个名字绑定。

13、built-in 是__builtins__模块的成员,在你的程序开始或在交互解释器中给出>>>提示之前,由解释器自动导入的。

14、Python用下划线作为变量前缀和后缀指定特殊变量。避免用下划线作为变量名的开始。
      _xxx    不用'from module import *'导入 
      __xxx__ 系统定义名字 
      __xxx   类中的私有变量名

15、一种非常合理的文本布局: 
      # (1) 起始行(Unix) 
      # (2) 模块文档                         
      # (3) 模块导入 
      # (4) 变量定义 
      # (5) 类定义 
      # (6) 函数定义 
      # (7) 主程序

16、推荐代码风格:主程序调用main()函数。__name__ 指示模块应如何被加载,如果模块是被导入, __name__ 的值为模块名字;如果模块是被直接执行, __name__ 的值为 '__main__' 。 
      if __name__ == "__main__":

......    #some test  code here

17、时刻记住一个事实,那就是所有的模块都有能力来执行代码。

18、通常只有主程序模块中有大量的顶级可执行代码,所有其它被导入的模块只应该有很少的顶级执行代码,所有的功能代码都应该封装在函数或类当中。

19、引用计数在下列情况下增加:

  1. 对象被创建
  2. 另外的别名被创建
  3. 被作为参数传递给函数(新的本地引用)
  4. 成为容器对象的一个元素

20、引用计数在下列情况下减少:

  1. 一个本地引用离开了其作用范围
  2. 对象的别名被显式的销毁
  3. 对象的一个别名被赋值给其它的对象
  4. 对象被从一个窗口对象中移除
  5. 窗口对象本身被销毁

21、使用局部变量替换模块变量。将经常用到的模块属性替换为一个本地引用。代码跑得更快,而也不用老是敲那么长的变量名了。

本次笔记针对原书第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 语言的双精度浮点类型。

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

第5章 数字

1、数字提供了标量贮存和直接访问。它是不可更改类型,也就是说变更数字的值会生成新的对象。

2、Python 支持多种数字类型:整型、长整型、布尔型、双精度浮点型、十进制浮点型和复数。

3、删除一个数值对象的引用,使用 del 语句。如果试图使用一个已经被删除的对象引用,会引发 NameError 异常。

4、布尔类型是只有两个值的整型。

5、Python 也有长整数类型。它表示的数值大小远超过 C 语言的长整数。Python 标准整数类型等价于 C 的(有符号)长整型。

6、Python 的长整数类型能表达的数值仅仅与你的机器支持的(虚拟)内存大小有关,换句话说,Python 能轻松表达很大的整数。

7、用大写字母 "L"表示长整数,这样能有效避免数字1和小写L的混淆。

8、Python 中的浮点数类似 C 语言中的 double 类型,是双精度浮点数,可以用直接的十进制或科学计数法表示。每个浮点数占8个字节(64比特)。

9、Python 语言中有关复数的几个概念:

  • 虚数不能单独存在,它们总是和一个值为 0.0 的实数部分一起来构成一个复数
  • 复数由实数部分和虚数部分构成
  • 表示虚数的语法: real+imag j
  • 实数部分和虚数部分都是浮点数
  • 虚数部分必须有后缀j或J

10、复数有conjugate内建方法,调用它可以返回该复数的共轭复数对象。

11、复数属性

  • num.real              该复数的实部
  • num num.imag     该复数的虚部
  • num.conjugate()  返回该复数的共轭复数

12、Python 使用数字类型强制转换的方法来解决数字类型不一致的问题,也就是说它会强制将一个操作数转换为同另一个操作数相同的数据类型。

13、类型转换的基本原则是:整数转换为浮点数,非复数转换为复数。

14、Python 提供了coerce()内建函数来帮助你实现这种转换:

  • 如果有一个操作数是复数,另一个操作数被转换为复数
  • 否则,如果有一个操作数是浮点数,另一个操作数被转换为浮点数
  • 否则, 如果有一个操作数是长整数,则另一个操作数被转换为长整数
  • 否则,两者必然都是普通整数,无须类型转换

15、传统除法:如果是整数除法,传统除法会舍去小数部分,返回一个整数(地板除)。如果操作数之一是浮点数,则执行真正的除法。

16、幂运算:幂运算操作符和一元操作符之间的优先级关系比较特别,幂运算操作符比其左侧操作数的一元操作符优先级低,比起右侧操作数的一元操作符的优先级高。

17、**(乘方)运算符优先级高于单目运算符。

18、Python 整数支持标准位运算:取反(~),按位 与(&), 或(|) 及 异或(^) 及左移(<<)和右移(>>)。

19、转换工厂函数:int(),bool(),long(),float()和complex()用来将其它数值类型转换为相应的数值类型。所谓工厂函数就是指这些内建函数都是类对象,当你调用它们时,实际上是创建了一个类实例。

20、功能函数:Python 有五个运算内建函数用于数值运算:abs(), coerce(), divmod(), pow()和round()。

  • abs()返回给定参数的绝对值。如果参数是一个复数,那么就返回math.sqrt(num.real2 + num.imag2)
  • coerce()仅回一个包含类型转换完毕的两个数值元素的元组
  • divmod()内建函数把除法和取余运算结合起来, 返回一个包含商和余数的元组
  • pow()和双星号(**)运算符都可以进行指数运算。不过二者的区别并不仅仅在于一个是运算符,一个是内建函数
  • round()用于对浮点数进行四舍五入运算

21、仅适用于整数的内建函数(标准整数和长整数):一类用于进制转换,另一类用于 ASCII 转换:

  • hex(num)   将数字转换成十六进制数并以字符串形式返回
  • oct(num)    将数字转换成八进制数并以字符串形式返回
  • chr(num)    将ASCII值的数字转换成ASCII字符,范围只能是0 <= num  <= 255
  • ord(chr)     接受一个ASCII或Unicode字符(长度为1的字符串),返回相应的ASCII或Unicode值
  • unichr(num) 接受Unicode码值,返回其对应的Unicode字符。所接受的码值范围依赖于你的Python是构建于UCS‐2还是UCS‐4

22、对高级的数字科学计算应用来说,著名的第三方包 Numeric(NumPy) 和 SciPy 非常有用。
       http://numeric.scipy.org/ 
       http://scipy.org/

23、模块: random

  • randrange()    它接受和 range()函数一样的参数, 随机返回range([start,]stop[,step])结果的一项
  • uniform()         几乎和 randint()一样, 不过它返回的是二者之间的一个浮点数(不包括范围上限)
  • random()         类似 uniform() 只不过下限恒等于 0.0,上限恒等于 1.0

Python核心编程读书笔记相关推荐

  1. C++Windows核心编程读书笔记(转)

    http://www.makaidong.com/(马开东博客) 这篇笔记是我在读<windows核心编程>第5版时做的记录和总结(部分章节是第4版的书),没有摘抄原句,包含了很多我个人的 ...

  2. pthon核心编程-读书笔记:知识点摘录与总结(方便理解和快速记忆)

    Python 中的列表(大小可变的数组)和字典(哈希表)就是内建于语言本身的.在核心语言中提供这些重要的构建单元,可以鼓励人们使用它们, 缩短开发时间与代码量,产生出可读性更好的代码.C不提供, c+ ...

  3. Python核心编程学习笔记(一)

    1.把一个字符串赋值给变量str.先用print来显示变量的内容,然后用变量名称来显示: >>>str = 'Hello World!' >>>print str ...

  4. python起步输入-[转载]python核心编程学习笔记-python起步

    python通过两种方式来实现你的需求:语句和表达式 语句:使用关键字组成命令 >>> print 'Hello wolrd!' Hello wolrd! 表达式:可以是算术表达式或 ...

  5. 《Python核心编程 》笔记-第二章+第三章

    第二章 快速入门 print语句中使用字符串格式操作符,实现字符替换功能. print "%s is %d" %("one",1) %s.%d.%f分别用字符串 ...

  6. 《Python核心编程》笔记 Python对象

    1.Python对象 Python使用对象模型来存储数据,构造任何类型的值都是一个对象.所有的对象都有三个特性: 身份,可通过内建函数id()查看,这个值即该对象的内存地址. 类型,可通过内建函数ty ...

  7. 《Python核心编程》笔记 Python对象

    第4章 Python对象 1.Python对象 Python使用对象模型来存储数据,构造任何类型的值都是一个对象.所有的对象都有三个特性: 身份,可通过内建函数id()查看,这个值即该对象的内存地址. ...

  8. windows核心编程读书笔记(一)

    第一章:错误处理 通过GetLastError函数获得更多的错误信息,或者在监视框中使用@err,hr(vs2005)获得错误信息,而不仅仅是错误编号. 第二章:字符和字符串处理 在应用程序中,应确保 ...

  9. Python核心编程学习笔记-2016-07-24-01-理解copy和deepcopy

    6.20节 copy实施方式: (1)完全切片操作[:] (2)工厂函数list(),tuple()等 (3)copy模块的copy函数 copy可以说是创建了了一个新的对象,但是内容仍然是原对象的引 ...

最新文章

  1. MF Porting之USB驱动开发
  2. pinpoint 安装部署
  3. 【转】从零开始学图形学:10分钟看懂贝塞尔曲线
  4. 有必要考国二mysql_计算机二级必须要考吗
  5. web目录字典_Dirmap:一款高级Web目录文件扫描工具
  6. PL/pgSQL的RETURN QUERY例子
  7. 网传字节跳动实习生删除所有轻量级模型,还有救吗?
  8. vijos 1071 01背包
  9. 分布式系统架构的优缺点
  10. 基于深度学习的云反演-文献分析
  11. mysql 关键字 desc_mysql数据库表字段使用DESC等关键字报错及解决方法
  12. android开发之高仿中国建设银行App
  13. 批量爬取链家房源信息
  14. Percona-XtraBackup系列一:安装 perl(Time::HiRes) is needed by percona-xtrabackup-2.2.10-1.el6.x86_64...
  15. 使用script#编写Xrm的Javascript
  16. 读取服务器光模块信息,如何使用MIB读取光模块的收发光功率
  17. when的多条件查询
  18. java递归算法经典实例_Java实现简单的递归操作方法实例
  19. spring boot 启用定时任务调取精伦IDR210阅读软件获取身份证信息 jna dll
  20. 计算机软件科学专利,计算机软件专利有哪些

热门文章

  1. 20175227张雪莹 2018-2019-2 《Java程序设计》第九周学习总结
  2. extundelete工具恢复rm -rf 删除的目录(ext4、ext3)
  3. 【硬核】年底绩效面谈,涨薪,老板给加了1万块
  4. IBM RSA 建模:第 8 章可重用模型
  5. java 管理 程序设计_用java编程设置管理的用户登录
  6. 自锁时间电路plc_起动、自锁和停止控制的PLC线路与梯形图
  7. GreeNC:植物lncRNA数据库
  8. Python实现火车票查询小工具
  9. 【技术实现】java实时同步postgresql变更数据,基于WAL日志
  10. 来传智播客学到的知识