学习《Python核心编程》做一下知识点提要,方便复习。
计算机语言的本质是什么?
a-z、A-Z、符号、数字等等组合成符合语法的字符串。供编译器、解释器翻译。
字母组合后产生各种变化拿python来说就是。keyword。数值,类,函数,运算符,操作符。。。。。。
1.变量不用声明,类型不固定
2.True,False = False,True读出了什么?True是个bool()类实例
3.类型工厂函数就是python2.2后把int() bool()等对数据类型操作的函数分装成对象 类 了,返回对象实例
4.三个单引號(三个双引號)产生的就是字符串常量。仅仅只是能够分行,也能够被用来多行凝视。
5.模块、类、函数开头的字符串是文档字符串,用doc訪问
6.2<3<6 就是2<3 and 3<6 同理 77 > 66 == 66
7.a,b,c=c,b,a多元赋值
8.+=、-=、=、*=、/=等这些叫增量赋值
9.同一行书写多条语句要用 ;
10.地板除———// 呵呵
11.浮点型在内存的表示方法也就是二进制表示
12.+、*用于字符串的连接与反复
13.[]叫索引操作符、[:]叫切片操作符
14.第一个字符串是0。最后一个字符串是-1
15.命令行下打开python可是设置參数。你知道吗?
16.if expr: … else: … if expr:… elif expr:… else:…
17.while expr: …
18.for循环事实上更像shell里面的foreach迭代器,迭代元素。for … in … : …。
for字典会是什么样子?
19.print 后面加,表示不换行可是有空格。
20.单独的print就是输出换行
21.列表解析是什么?[x**2 for x in range(4)]、[x**2 for x in range(4) if not x % 2]
22.try: … except … : …
23.能够raise一个异常像Java中的throw
24.函数没有return则自己主动返回None
25.函数def foo(para = True): …函数能够有默认值
26.类的静态变量怎么定义?
27.类中,通过self.a定义的变量仅仅在实例化中存在,不在类中存在
28.PEP是什么自己查去
29.最好用四个空格缩进,不要用制表符,跨平台不好
30.模块里面的代码能够是直接运行的脚本,也能够是相似库函数的代码
31.python的赋值都是引用赋值,仅仅有变化了才会分配新内存
32.多重赋值 x = y = z = 1
33.import … from *不要滥用
34.python不支持重载标识符,所以尽管build-in不是keyword,可是不建议使用,把他当做保留字吧
35._xxx 不用from module import *导入,保护成员,子类能够訪问
36.__xxx类中的私有变量,子类不能訪问
37.if __name__ == ‘__main__’能够回归或是单元測试
38.文件里,全部顶级代码都会被运行,模块中最好少些顶级代码
39.有时间去了解一下PyUnit
40.全部python对象都有三个特性,身份(id()),类型(type()),值
41.属性即函数、方法、数据。
含有数据属性的有类、类实例、模块、复数、文件等
42.标准类型(基本数据类型):整数、布尔、浮点、复数、字符串、列表、元组、字典
43.其它内建类型:类型(type())、Null对象(None)、文件、集合、函数(方法)、模块、类
44.用户创建的类实例假设定义了nonezero(__nonezero__())或是length(__len__())且值为0。那么他们的布尔值就是False
45.a is b 等价id(a)==id(b),当然还有is not
46.python中的变量更像是指针指向装变量的盒子。赋新值就像换了一个盒子。
47.del能够删除对象的引用。引用删除你就不能再使用这个变量名(引用)
48.10、017、0x92十进制、八进制、十六进制
49.查查十进制浮点型是啥子玩意。
50.字符串比較 str1 < str2用的是字符串ASCII值的大小
51.成员操作符 in 和 not in
52. f = (“aaa” #1
“bbb” #2
“ccc”) #3
print f
53.%d、%c、%f这些格式化输出符号叫占位符
54.原始字符串操作符(r/R)print r’\n’
55.Unicode字符串操作符(u/U) ,若和原始操作符联用。必须在r前面。
ur’hello\nworld’
56.字符串是不可变的
57.字符串、列表和元组统称序列
58.sort()函数对于字符串是有返回值的,而列表则在原列表更改。没返回值。
59.用列表能够构建其它数据结构,队列和栈
60.数字、字符串、元组都是不可变类型
61.拷贝python对象,深拷贝和浅拷贝
62.p = [:]切片拷贝、list()dict()工厂函数、copy模块copy函数都是浅拷贝
63.有个有趣的样例说明“仅仅读”或是说不可变量在拷贝过程中的问题
p=[‘name’,[‘age’,33]]
m = p[:];n = list(p)
m[0]=’kids’;n[0]=’adults’
m[1][1] = 99
后发现m和n的name部分不一样,而列表的却都成了99用id()函数发现序列部分是一样的,name部分不一样。
64.用copy.deepcopy()运行深拷贝
65.非容器类型(数字。字符串。其它原子类型对象,代码、类型和xrange对象)都没有拷贝一说
66.假设元组变量仅仅包括原子类型,对它的深拷贝将不会进行,深拷贝也仅仅能得到一个浅拷贝
67.大多数python对象可作为键,可是列表和字典这种可变类型不是可哈希的,不能做键
68.实现了__hash__()特殊方法的类也能够作为键
69.集合能够由set和frozenset得到
70.python中类型的非常多内建方法“差点儿”和操作符等价
71.条件表达式 x if x < y else y
72.smaller = (x < y and [x] or [y])[0]尝试一下1<2 and [1],为什么会这样呢?貌似也和C语言一样会短路,真 与 X 仅仅要考虑后面的X即可。假 与 X 的话X表达式不是必需运行。
73.while (count < 9):那个括号是什么?理解:a = (2) b = (‘3’)是元组吗?
74.pass的作用
75.while和for能够使用else语句
76.字典,文件都能够用迭代器iter(seq),用for… in …系统会自己主动转换
77.迭代器在使用时最好不要删除元素
78.实现了__iter__()和next()方法的类能够作为迭代器使用
79.[(x+1,y+1) for x in range(3) for y in range(5)]
80.生成器表达式就是把列表解析的方括[]号变成括号(),感觉是这样
81.文件打开的模式有w r a U +(表示可读可写) b表示二进制打开