《Effective Python》Chapter3总结

Date:
Categories: python
Author: sysublackbear
Tags:

Chapter3 的整理细节如下:

Chapter3.类与继承

第22条:尽量用辅助类来维护程序的状态,而不要用字典和元组

要点:

  • 不要使用包含其他字典的字典,也不要使用过长的元组。
  • 如果容器中包含简单而又不可变的数据,那么可以先使用namedtuple来表示,待稍后有需要时,在修改为完整的类。
  • 保存内部状态的字典如果变得比较复杂,那就应该把这些代码拆解为多个辅助类。

举个例子:本来记录每次学生考试的成绩的一个简单例子,由于不停地添加需求,比如增加记录此成绩占该科目总成绩的权重,等等,代码膨胀成如下这样:

class WeightedGradebook(object):
    def __init__(self):
        self._grades = {}

    def add_student(self, name):
        self._grades[name] = {}

    def report_grade(self, name, subject, score, weight):
        by_subject = self ...

《Effective Python》Chapter2总结

Date:
Categories: python
Author: sysublackbear
Tags:

继续,Chapter2的梳理如下:

Chapter2.函数

第14条:尽量用异常来表示特殊情况,而不要返回None

要点:

  • None这个返回值来表示特殊意义的函数,很容易使调用者犯错,因为None和0 及空字符串之类的值,在条件表达式里都会评估为False;
  • 函数在遇到特殊情况时,应该抛出异常,而不要返回None。调用者看到该函数的文档中所描述的异常之后,应该就会编写相应的代码来处理它们了。

举个例子:

def divide(a, b):
    try:
        return a / b
    except ZeroDivisionError:
        return None

这里会产生一个错觉,我们可能不会专门去判断函数的返回值是否为None,而是会假定:只要返回了与False 等效的运算结果,就说明函数出错了。

x, y = 0, 5
result = divide(x, y)
if not result ...

《Effective Python》Chapter1总结

Date:
Categories: python
Author: sysublackbear
Tags:

最近在看《Effective Python》这本书,觉得很不错,对于今后的代码如何写得更pythonic。整理下吧,后面可以反复看,感觉很多建议都非常实用。

下面是一些重点摘要:

Chapter1.用Pythonic 方式来思考

第1条:确认自己所用的Python 版本

没什么可说的,还是尽快把代码迁往py3.x吧,顺便写下如何了解所使用的具体版本python:

  ~ python --version
Python 2.7.10
  ~ python3 --version
Python 3.5.0

import sys
print(sys.version_info)
print(sys.version)
  • 有两种版本的Python处于活跃的状态:python2 和 python3;
  • 有多种流行的Python运行时环境,例如:CPython,Jython,IronPython 以及 ...