Think Python 自己的一些笔记

这部分主要是自己看到后半部分才想起来记得。主要是记载书中的一些编程概念和技巧。

陆陆续续补全上半部分吧。

 

Chapter 12 Tuple:
1)元组的操作中,有DSU(decorate-sort-undecorate)的思想过程。
2)元组是不可变的,但是可以用替换的方法。
eg. t = ('a', 'b')
t = ('A') + t[:1]
3)tip:
t = list(s)
t = ''.join(t)
'''
make the list —> string
'''

4) * gather & scatter
5)对于 list dict tuple:
有些方法是对list的,就需要在list完成
有些地方需要用tuple的,就需要添加tuple
几种结构的转化应用,方法都需要灵活

Chapter 13 strcture shape:
1)string.strip() 作用于prefix & taril
split能用于string,但是replace可以进行替换
紧记string不可变原则
2) set 类型直接做 集合 的运算
sets 和 frozenset的区别,可变与不可变?set本身不可变,又怎么做出来可变与不可变呢?
例子给的是直接做的 - 选
3) 数据结构的选择有利于优化 运行时间 和 储存空间基准比较的方法!
4) open 读取文件,相当于一个全局可变列表,知道读了就经行到下一行。像不像指针呢?

Chapter 14 file:

1) '.'当前文件保存这一级的目录,'..'上一级的目录
2)文件的保存是非瞬态的,当然读取也是非瞬态的。这也就解释了open的原理
3)写文件完了以后要记得关闭
4) '%d' 和一个,多个和元组对应。要匹配
5)文件名和路径的库 os (operating system)
6)repr显示‘完整’字符串 'Simth\'s___' 用 \ 来帮助 ' 作为字符串项
因为print()两个变量之间会自动出现空格
7) __name__ 内置变量,当作为脚本运行时,__name__ 是 '__main__'
import 导入运行过的脚本就不会再运行 if __name__ ...那个条件语句了。
空格也算一行程序哦!

Chapter 15 class & attribute:
1)Python的类 只提供了一个类型,内容都没有定义,当你要内嵌一个类的时候,要重新定义这个类型和赋值
2)print一个class 只会显示出<__main__.Point object at 0x0207E3D0> 其中__main__说明是在顶层定义的

Chapter 16 class & function:
1)函数式编程风格 纯函数&修改器
2)纯函数:开发快,错误少,运行效率不高。 函数式编程返回新实例,管用这一个风格,return 直接就返
回一个新类了,纯函数 不要求输入,也不会打印等副作用 pure 纯
3)prototype and patch & planned development 我推荐后者
4)Sometimes 将一个问题弄复杂(或者更通用)反而会让其更简单
5)from datetime import datetime 是从datetime库中导入class datatime ;import math 之后math.pi math.sqrt这些事varible&function

Chapter 17 class & method:
1)subject 类的方法调用与函数调用的不同
2)spcialnames 操作符重载(operator overloading) 修改操作符以便于作用于用户定义的类型,应该用纯函数来写,不能用修改器
3)基于类型的分发(tpye-based dispatch) 用来考虑输入的不同类型,进行不同的处理,使程序更加的通用
4)多态(polymorphic)处理多个类型(更多的时候用多态,而不用基于类型的分发)。最好的多态,发现一个已有函数可以处理未曾预料的类型
5)信息隐藏(information hiding) 接口和实现分开,将属性隐藏。便于修改。用方法来读写对象状态,而不是直接访问。封装技术!
对象提供的接口不应依赖于其实现,特别是属性表达形势的规则。
6)BadKangaroo 当你把可选参数 contents = [] 时候,多次的建造该类,contents都指向同一个list,
可以用 contents=None -> if contents == None: contents = [] 就可以了。
As a general rule, you should avoid using a mutable object as a default value, unless you really know what you are doing.

Chapter 18 inheritance:
1)类属性和实例属性是有区别的,一个类下的实例有各种实例属性,但是只有一个类属性
2)饰面(veneer)换汤不换药啊
3)继承,子类从父类继承。相似又不相同。促进复用,清晰自然结构。也有可能让程序更难读。
4)类图 HAS-A IS-A 两类关系,一个类可能依赖另一个类。 HAS-A 可以通过看类内,是否创建了类的实例。
5)重载一个方法:新旧方法应该有一样的接口,相同的输入参数,返回参数,前置后置条件
6)数据封装:变量——>属性,函数——>方法 重构的另一个示例
7)类图,对象图,关联重数。

Chapter 19 tkinter :
1)事件循环(event loop) 部件(widget)包括:按钮(button),画布(canvas),输入框(entry),滚动条(scollbar),画布框(frame)
2)抽象成类的概念,对类的实力实例操作,大小啊,名称啊,方法啊,都是在某个类的实例上进行的,就好比一个实例就是一个部件
3)回调(callback)
4)事件驱动编程,主导程序进行的是事件,而不是程序员了。
5)图形项(item) 现有画布才能画画,先有事件,才能驱动。
6)边界盒,两点限定了一个矩形区域。在矩形区域内。
7)END 是一个特殊索引,python里的输入框 1.1 一行一列起始,行是从1开始,列可以假设从0开始到END就是到结尾。

调试:

1-10 补全
11.
大数据调试
1) 缩小输入
2)检索概要信息和类型 有可能是其中类型不匹配导致的错误
3)编写在检查逻辑 sanity check健全检查 eg.用中值,自己检错
4)美化输出 好的输出有利于查错
12.
structureshape pair
13.
阅读 : 查找拼写错误之类
运行 : 在正确地方加上输出 结合 其他方法进行调试
沉思 : 错误类型 错误中得到信息 哪一种错误有可能 %最后一次的修改%
回退 : 回退到上一个版本
14.
泛化
异常
if __name__ == '__main__'
可选参数作为泛化的补充
15.
hasattr 检查类属性
getattr 接受对象和属性,返回属性值
16.
不变式:程序执行过重应当总为真
函数式编程风格
assert 函数处理异常
17.
__dict__ 属性和值的映射
18.
确认流程方法:在每个方法前打印一行
def find_defining_class(obj, meth_name):
for ty in type(obj).mro():
if meth_name in ty.__dict__:
return ty
#返回方法和定义它的类。mro方法,用于搜索调用方法的类对象(类型)列表。

Debug&Algorithm:
A.1语法错误
函数对象,代码对象,字节码
重载reload import
A.2运行时错误
异常:
NameError
TypeError
KeyError
AttributeError
IndexError
Python的调试器pdb能够帮助你查找异常
简化处理程序,然后,清理程序,删除无效代码。
问题常常不是出在程序上,而是你的思维模型上。修正思维模型的最佳方法是将程序划分成不同部分。
Lumpy:
基于统一建模语言(UML, Unified Modeling Language)
状态图 栈图 对象图 函数和类对象 类图


Install & development:
1)原因是pip安装python包会加载我的用户目录,我的用户目录恰好是中文的,ascii不能编码。解决办法是:
python目录 Python27\Lib\site-packages 建一个文件sitecustomize.py
内容写:
import sys
sys.setdefaultencoding('gb2312')

转载于:https://www.cnblogs.com/svinlearnpy/p/3619079.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值