学习迭代器(深入Python 3)

学习迭代器(深入Python 3),python,iterator,Python,Iterator,一个问题基于作者对此的评论,如下所示: 只要从模式文件中读取的规则与我们正尝试多重化的单词不匹配,这个读取构建和缓存过程就会继续。如果我们确实在文件结尾之前找到了匹配规则,我们只需使用它并停止,而文件仍处于打开状态。文件指针将停留在我们停止读取的任何位置,等待下一个readline()命令。同时,缓存中现在有更多的项,如果我们重新开始尝试对一个新词进行复数,在从模式文件读取下一行之前,将尝试缓存中的每个项 在上面引用的文本中,我没有看到任何粗体字的实现。如何准确地尝试每个缓存项 在每次对象调用时

一个问题基于作者对此的评论,如下所示:

只要从模式文件中读取的规则与我们正尝试多重化的单词不匹配,这个读取构建和缓存过程就会继续。如果我们确实在文件结尾之前找到了匹配规则,我们只需使用它并停止,而文件仍处于打开状态。文件指针将停留在我们停止读取的任何位置,等待下一个readline()命令。同时,缓存中现在有更多的项,如果我们重新开始尝试对一个新词进行复数,在从模式文件读取下一行之前,将尝试缓存中的每个项

  • 在上面引用的文本中,我没有看到任何粗体字的实现。如何准确地尝试每个缓存项
  • 在每次对象调用时清除self.cache是否正确
  • 它在
    复数功能中:
  • LazyRules
    类的每个新实例(例如
    rules=LazyRules()
    )都从它自己的空缓存开始(
    self.cache=[]
    下的
    \uuu init\uuuu
    )。每次您在第一次使用该缓存后对该对象(
    for…in rules
    )进行迭代时
  • 它在
    复数功能中:
  • LazyRules
    类的每个新实例(例如
    rules=LazyRules()
    )都从它自己的空缓存开始(
    self.cache=[]
    下的
    \uuu init\uuuu
    )。每次您在第一次使用该缓存后对该对象(
    for…in rules
    )进行迭代时
  • for matches_rule, apply_rule in rules:
        if matches_rule(noun):