Luxin's Blog

《Effective Python》笔记-第8章 稳定与性能

第六十五条:合理利用try/except/else/finally结构中的每个代码块 try/finally形式的复合语句可以确保,无论try块是否抛出异常,finally快都会得到运行。 如果某段代码应该在前一段代码顺利执行之后加以运行,那么可以把它放到else块里面,而不要把这两段代码全都写到try快之中。这样可以让try块更加专注,同时也能够跟except块形成明确对照:excep...

《Effective Python》笔记-第5章 类与接口

第三十七条:用组合起来的类实现多层架构,不要用嵌套的内置类型 不要在字典里嵌套字典、长元组,以及用其他内置类型构造的复杂结构。 namedtuple能够实现出轻量级的容器,以存放不可变的数据,而且将来可以灵活地转化成普通的类。 如果发现用字典维护内部状态的那些代码已经越写越复杂了,那么就应该考虑用多个类来实现。 第三十八条:让简单的接口接受函数,而不是类的实例 Python有许多内...

《Effective Python》笔记-第3章 函数

第十九条:不要把函数返回的多个数值拆分到三个以上的变量中 函数可以把多个值合起来通过一个元组返回给调用者,以便利用Python得unpacking机制去拆分。 对于函数返回的多个值,可以把普通变量没有捕获到得那些值全部捕获到一个带星号的变量中。为了避免调用方要接收一大堆返回值,容易出错,以及拆分返回值返回值的那行代码过长,不符合PEP8风格,我们不应该把函数返回的多个值拆分到三个以上的变...

《Effective Python》笔记-第2章 列表与字典

第十一条:学会对序列做切片 在Python中,凡是实现了_getitem_与_setitem_这两个特殊方法的类都可以切割。最基本的写法是somelist[start:end]这一形式来切割,也就是从start开始切割到end这个位置,但不包含end本身的元素。如果是从头开始切割,可以省略冒号左侧的下标0,这样看起来更加清晰。同样的,如果一直切割到末尾,也应省略冒号右侧的下标。 用负数作...