考虑假设函数repeatcall
,它接受一个无参数可调用func
和一个正整数作为参数n
,并返回一个列表,其成员是通过执行func()
n
时间获得的。它支持无限的愚蠢hijinks流,例如:
>>> 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
。