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]
Python 2.x標準ライブラリのどこかにあるような関数を見たことがあると断言できますがrepeatcall
、見つかりません。これを夢見ていなかった場合、標準ライブラリのどこで見つけることができますか?
PS:自分で転がすのは簡単なことですが、車輪の再発明は嫌いです。特に、すでに標準ライブラリにあるものはそうです。私は自分自身を転がす方法を尋ねていません。
編集:コーディング方法を尋ねていないことをさらに明確にrepeatcall
しました。