开篇第一句:python最好的品质是一致性。 一致性 一致性的含义就是多种含义的写法保持相似,让你不用记忆各种特征。 比如下面举的例子: len() 函数,这种写法仍然是旧式的函数式写法,而不是时髦的面向对象的写法。但是下面会解释这种做法的优点。 len() 方法的思想 python 中执行 import this 可以看到一列文字,其中有一句: practicality beats purity. putiry,纯粹,就是严格执行规则,比如使用 obj.len() 这种面向对象的形式。 内置类型坚持使用 len() 形式的原因是:CPython会从C的struct体里直接读取对象的长度,而不需要调用其他任何内置的方法函数。 更本质的说,可以把 len() 看作一个一元运算符,看起来像函数,而又不是函数。 dunder-method 两个下划线开头的函数,名称变化的过程是: underscore-underscore-method under-under-method double-under-method d-under-method 纸牌例子 使用 named tuple 表示单张纸牌,named tuple用于构建只有属性没有方法的对象。 生成 纸牌点数序列的语句: ranks = [str(n) for n in range(2,11)]+list('JQKA') 加号(+)前面一部分并不陌生,加号后面的写法我还是第一次见 list('JQKA') 这种生成单个字母序列的方法十分简单。