Python设计模式:迭代器、装饰器与观察者模式解析
迭代器模式相关探讨
迭代器模式在编程中有着独特的地位。虽然协程和生成器通常不被认为是面向对象的,但创建它们的函数会返回对象,可将这些函数视为构造函数。构造出的对象具有相应的 send()
和 __next__()
方法,实际上,协程/生成器语法是创建特定对象的语法捷径,若没有它,创建这些对象的代码会变得冗长。
在开发过程中,采用自底向上的设计方法很常见。先创建执行特定任务的低级对象,最后将它们组合在一起。这种方法与自顶向下的设计形成对比,自顶向下设计有时会导致代码过于庞大,而不是形成独特的独立部分。我们需要在过大和过小的方法之间找到平衡,无论是否使用迭代器协议都是如此。
以下是一些相关的练习建议:
1. 转换循环为推导式 :如果你在日常编码中不常使用推导式,可以在现有代码中查找 for
循环,看是否能轻松将其转换为生成器表达式、列表推导式、集合推导式或字典推导式。
2. 测试列表推导式和 for
循环的速度 :可以使用内置的 timeit
模块来测试列表推导式是否比 for
循环更快。具体操作如下:
- 编写两个完成相同任务的函数,一个使用列表推导式,另一个使用 for
循环。
- 将每个函数传递给 timeit.timeit
,比较结果。如果有兴趣,还可以比较生成器和生成器表