《think_python》读书笔记
最近在图书馆发现了一本书《Think Python:How to Think Like a Computer Scientist》,看起来还不错的样子,于是就拿来看了,是一本蛮适合入门Python的书,还能查漏补缺,个人还是蛮推荐的。可以尝试看完廖雪峰的python教程然后看这本。
程序之道
- 操作符**表示进行指数运算。12>>> 6**2+642
在其他一些语言中,指数操作用^符号表示,但在Python中^已经被用来表示二进制按位运算XOR了。12>>> 6^24
变量、表达式和语句
- 一般来说,字符串不能进行数学操作,但*和+例外。
函数
- 单引号和双引号的作用相同。大部分情况下人们都使用单引号。
- 函数定义必须在函数被调用之前先运行。
案例研究:接口设计
- 封装:将一组语句转换成函数定义的过程。
- 泛化:将一些不必要的具体值替换为合适的通用参数式变量的过程。
- 重构:修改代码并改善函数的接口以及代码质量的过程。
条件和递归
- 递归:在当前函数调用自己的进程。
有返回值的函数
- 增量开发:一个程序开发计划,通过每次只增加少量代码并加以测试的步骤来减少调试。
迭代
- 迭代:使用递归函数调用或循环来重复执行一段语句。
字符串
- 切片
- 字符串是不可变的,也就是说,不能修改一个已存在的字符串,最多新建一个字符串。
案例分析:文字游戏
列表
当一个对象有多个引用,并且引用不同的名程时,我们说这个对象有别名。如果有别名的对象是可变的,则对一个别名的修改会影响另一个。
1234567>>>a = [1,2,3]>>>b=a>>>b is aTrue>>>b[0]=3>>>a[3,2,3]通过复制来避免别名
12t=[2,3,5]t2 = t[:]
字典
元组
- zip是一个内置函数,接收两个或多个序列并返回一个元组序列。
- 字典有items方法返回一个元组序列,每个元组是一个键值对。反之,可以用一个元组列表来初始化一个新字典,dict()。
案例研究:选择数据结构
- 伪随机:看起来是随机的,但实际上是由带着确定性的程序生成的一序列数。
文件
类和对象
类和函数
- 纯函数:不修改任何形参对象的函数。大部分纯函数都有返回值。
- 修改器:修改一个或多个形参对象的函数。大部分修改器都没有返回值,也就是返回None。
- 总的来说,推荐只要合理的时候都尽量编写纯函数,而只有在具有绝对说服力的时候使用修改器。这种方法可以称作函数式编程风格。
类和方法
继承
Python拾珍
- 收集关键词参数
|
|
星号操作符并不会收集关键词实参,要收集关键词实参,采用**操作符:12def printall(*args,**kwargs): print(args+kwargs)