Blog地址:https://www.jiangdog.com/blog/fluent-python-note-1
第一章 Python数据模型
- 一个集合类型在未实现
__contains__
时,利用in
运算符时,会进行一次搜索。 %s
,print()
,str()
,{!s}
对应的__str__
实现;{!r}
,%r
对应的__repr__
实现。当没有__str__
实现而Python又要调用它时,解释器会用__repr__
代替。详细bool()
调用__bool
;若不存在__bool
则调用len()
,若返回0则bool()
返回False。len()
作用于内置集合类型时,直接从C结构体中读取长度。
第二章 序列构成的数组
- 可变序列,不可变序列;容器序列(多类型),扁平序列(单类型)。
- 2.x版本列表推导式中使用同名变量可能会造成变量泄露,导致改变之前变量的值。(生成器表达式似乎不会。)
- 生成器表达式在作为单个参数传递时,可以省略小括号。
beyond_ascii_tuple = tuple(ord(c) for c in symbols if ord(c) > 127)
- namedtuple实际上是一个类?
- Why numbering should start at zero
- 利用
slice()
对切片命名。 利用*操作序列时,若序列是由可变对象组成的,利用生成的新序列中的元素实际上是相同的引用。如:
nested_l = [[]] nested_l_3 = nested_l * 3 print(nested_l_3) # [[], [], []] nested_l_3[0].append(1) print(ne