considerare la funzione ipotetico repeatcall
, che prende come argomenti mancato args richiamabile func
e un intero positivo n
, e restituisce un elenco del quale sono ottenuti eseguendo func()
n
volte. Supporta un flusso infinito di hijinks stupide come:Funzione per chiamare ripetutamente una funzione?
>>> 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]
Potrei giurare che ho visto una funzione come repeatcall
da qualche parte nelle librerie standard di Python 2.x, ma non riesco a trovarlo. Se non ho sognato questo, dove nella libreria standard posso trovarlo?
PS: So che è banale rotolare il proprio, ma odio reinventare le ruote, specialmente quelle che sono già nella libreria standard. Sono non chiedendo come fare il mio.
Edit: ha reso ancora più esplicito che io non sto chiedendo come codice repeatcall
.
non è solo mappatura su un intervallo? – gbulmer