Python高级编程笔记
2016-09-10 本文已影响108人
treelake
-
使用enumerate在循环序列时获得索引。 考虑适时地将for改为list comprehensions
-
创建定制的迭代器:编写一个具有next方法的类,只要该类能够提供返回迭代器实例的iter方法。
1.png
a. 如:
-
典型的生成器模板:
2.png -
由生成器到协程:
3.png -
常见的装饰器模式包括:
a. 参数检查
b. 缓存
c. 代理
d. 上下文提供者 -
槽
__slots__
为指定的类设置一个静态特性列表,并且跳过每个类实例中__dict__
列表的创建工作。它们用来为特性很少的类节省空间,因为将不在每个实例中创建__dict__
。除此之外,它们有助于设计签名必须被冻结的类,例如,如果必须限制类之上的语言动态特性,定义槽也是有帮助的。 -
__new__
是对于对象状态隐式初始化需求的回应。它使得可以在比__init__
更低的层次上定义一个初始化,这个初始化总是会被调用。 -
__metaclass__
方法,元类提供了在类对象通过其工厂方法在内存中创建时进行交互的能力。它们的效果与__new__
类似,只不过是在类级别上运行。内建类型type是内建的基本工厂,它用来生成指定名称、基类以及包含其特性的映射的任何类。 -
对参数的输入输出的边界值要小心。如果一个对象是在参数中创建的,并且函数返回了该对象,那么该参数引用将仍然存在。如果它被作为默认值使用,可能导致不可预测的结果。