Изучение итераторов (погружение в Python3) - PullRequest
0 голосов
/ 05 февраля 2019

Вопрос основан на этом фрагменте Комментарии автора к этому следующие:

Этот процесс чтения-сборки-и-кэша будет продолжаться до тех пор, пока действуют правилачтение из файла шаблона не соответствует слову, которое мы пытаемся использовать во множественном числе.Если мы находим подходящее правило до конца файла, мы просто используем его и останавливаемся, файл остается открытым.Указатель файла будет оставаться там, где мы прекратили чтение, в ожидании следующей команды readline ().Между тем, в кеше теперь больше элементов, и если мы начнем все сначала, пытаясь приумножить новое слово, каждый из этих элементов в кеше будет проверен перед чтением следующей строки изфайл шаблона.

  1. Я не вижу никакой реализации, которая выделена жирным шрифтом в приведенном выше тексте.Как именно проверяется каждый из кэшированных элементов?
  2. Правильно ли, что self.cache очищается при каждом вызове объекта?

1 Ответ

0 голосов
/ 05 февраля 2019
  1. Это в функции plural:
for matches_rule, apply_rule in rules:
    if matches_rule(noun):
Каждый новый экземпляр класса LazyRules (например, rules = LazyRules()) начинается с собственного пустого кэша (self.cache = [] в __init__).Каждый раз, когда вы перебираете этот объект (for ... in rules) после первого раза, он может использовать этот кеш.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...