Могу ли я запомнить генератор Python?Python

Программы на Python
Ответить
Anonymous
 Могу ли я запомнить генератор Python?

Сообщение Anonymous »

У меня есть функция runquery, которая обращается к базе данных, а затем выдает строки одну за другой. Я написал декоратор memoize (точнее, я просто украл его из этого вопроса о stackoverflow), но при последующих вызовах он просто выдает пустую последовательность, предположительно потому, что значения генератора могут быть выданы только один раз.
Как я могу изменить декоратор мемоизации, который работает для генераторов Python? Я понимаю, что в какой-то момент мне нужно будет сохранить его в памяти, но я бы хотел обработать это в декораторе, а не изменять исходную функцию.

Текущий код функция запоминания:

def memoized(f):
# Warning: Doesn't work if f yields values
cache={}
def ret(*args):
if args in cache:
return cache[args]
else:
answer=f(*args)
cache[args]=answer
return answer
return ret


Подробнее здесь: https://stackoverflow.com/questions/456 ... -generator
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»