python核心编程笔记--chapter3

时间:2021-07-18 22:46:10

chapter 3

1.python语句中一些基本规则和特殊字符:

 井号#表示之后的字符为python注释

 换行\n是标准的行分隔符

 反斜线\是继续上一行

 分号;将两个语句连接在一行中

 冒号:将代码块的头和体分开

 语句用缩进的块的方式体现

 不同的缩进深度分隔不同的代码块

 python文件以模块的形式组织

2.python语句一般使用换行分隔,即一行一个语句,一行过长的语句可以使用反斜杠\分解成几行;

 在使用闭合操作符如小括号、大括号、花括号时可以多行书写,另外三引号包括下的字符串也可以跨行书写

3.尽量使用四个空格为缩进宽度,避免使用制表符

4.分号允许将多个语句写在同一行上,但不提倡这样做

5.复制并不是直接讲一个值赋给一个变量,对象通过引用传递。在赋值时,不管这个对象是新创建的还是已存在的,都是将该对象的引用(并不是值)赋值给变量。

6.python的赋值语句不会有返回值:x=1;y=(x=x+1)在python中是非法的

 可以链式赋值 y=x=x+1

7.多元赋值:将多个变量同时赋值的方法,采用这种方式赋值时,等号两边的对象都是元组

 (x,y,z)=(1,2,'a string') 小括号是可选的

 利用多元赋值的方式可以实现无需中间变量交换两个变量的值

 x,y=1,2 ;x,y=y,x

8.python用下划线作为变量前缀和后缀指定特殊变量:

 _xxx :不用'from module import *' 导入

 __xxx__ :系统定义名字

 __xxx :类中的私有变量名

9.python提供了可以通过__doc__特别变量,动态获得文档字串的机制,在模块、类声明、或者函数声明中第一个没有复制的字符串可以用属性obj.__doc__来进行访问:类的文档变量是class.__doc__、函数的文档变量是function.__doc__

10.模块结构和布局:

  #(1)起始行

  #(2)模块文档

  #(3)模块导入

  #(4)变量定义

  #(5)类定义

  #(6)函数定义

  #(7)主程序

11.__name__系统变量 可以指示模块是如何被加载的。如果模块是被导入,__name__的值为模块名字,如果模块是被直接执行,__name__的值为'__main__'

12.变量只有被创建和赋值后才能被使用

13.引用计数:

  python内部记录着所有使用中的对象各有多少引用。一个内部跟踪变量,称为一个引用计数器,当这个对象的引用计数变为0时,它被垃圾回收(严格来说并不是)。

  增加引用计数:当对象被创建并(将其引用)赋值给变量时,该对象的引用计数就被设置为1。当同一个对象(的引用)又被赋值给其他变量时,或作为参数传递给函数,方法或类实例时,或者被赋值为一个窗口对象的成员时,该对象的一个新的引用,或者称作别名,就被创建(则该对象的引用计数自动+1)

例:x=3.14 #创建了一个浮点数对象 并将其引用赋值给x,x是第一个引用

  y=x #创建了一个指向同一对象的别名y,事实上并没有创建新的对象,而是将该对象的引用次数增加了1次

对象被创建:x=3.14

另外的别名被创建: y=x

作为参数传递给函数: foobar(x)

成为容器对象的一个元素: mylist = [123,x,'xyz']

以上都会使得引用计数+1

  减少引用计数:当对象的引用被销毁时,引用计数会减小,例如当引用离开其作用范围时,这种情况最经常出现在函数运行结束时,所有的局部变量被自动销毁,对象的引用计数也就随之减少。

例:foo = 'xyz'  #字符串对象xyz被创建,引用计数为1

  bar = foo    #增加一个别名bar,引用计数+1为2

  foo = 123   #foo被重新赋值给整数对象,xyz对象的引用计数自动减1为1

一个本地引用离开了其作用范围。比如foobar()函数结束时

对象的别名被显式的销毁:del y #or del x

对象的一个别名被赋值给其他对象: x = 123

对象被从一个窗口对象中移除: mylist.remove(x)

窗口对象本身被销毁:del mylist

以上会使得引用计数-1

14.del语句:会产出对象的一个引用  语法:del obj1[,obj2[....objN]]

15.不再被使用的内存会被一种称为垃圾收集的机制释放。垃圾收集器是一块独立的代码,它用来寻找引用计数为0的对象,也负责检查那些虽然引用计数大于0但也应该被销毁的对象。

  python的垃圾收集器其实是一个引用计数器和一个循环垃圾收集器。

16.关键字as:

  as 定义异常实例  except IOError as e :  在老版本中写成except IOError,e :