Функция многократного вызова функции?

Рассмотрим гипотетическую функцию repeatcall, которая принимает в качестве аргументов вызываемый объект no-args funcи положительное целое число nи возвращает список, элементы которого получены путем выполненияfunc()nраз. Он поддерживает бесконечный поток глупых шуток, таких как :

>>> repeatcall(lambda: id(dict()), 5)
[45789920, 45788064, 45807216, 45634816, 45798640]

>>> urandom = lambda: struct.unpack('Q', open('/dev/urandom').read(8))[0]
>>> repeatcall(urandom, 3)
[3199039843823449742, 14990726001693341311L, 11583468019313082272L]

>>> class Counter(itertools.count): __call__ = itertools.count.next
>>> repeatcall(Counter(100, -2), 4)
[100, 98, 96, 94]

. Могу поклясться, что я видел функцию, подобную repeatcall, где-то в стандартных библиотеках Python 2.x, но я не могу ее найти. Если мне это не приснилось, то где в стандартной библиотеке я могу это найти?

PS:Я знаю, что создавать свои собственные тривиально, но я ненавижу изобретать велосипеды, особенно те, которые уже есть в стандартной библиотеке. Я не спрашиваю, как сворачивать свои собственные.

Редактирование:сделало еще более явным то, что я не спрашиваю, как кодировать repeatcall.

6
задан kjo 7 April 2012 в 00:59
поделиться