Nella documentazione di defaultdict
c'è questo esempio:In che modo Python itertools `constant_factory` esempio superior a` lambda: x`?
>>> def constant_factory(value):
... return itertools.repeat(value).next
come "Un modo più veloce e più flessibile per creare funzioni costanti".
Come è superiore a
def constant_factory(value):
return lambda : value
?
Si noti che, naturalmente, nessuno definirebbe una funzione per questo ... è sufficiente usare (lambda: 42)
per digitare anziché chiamare constant_factory(42)
.
Per la creazione di una costante fabbrica di restituire un mutabile se ciò è voluto si potrebbe usare (lambda x=[]:x)
(btw questo è quello che farebbe constant_factory([])
, ma è qualcosa che spesso si morde indietro ... vedi ad esempio this question).
Forse l'implementazione di itertools è ottimizzata e più veloce di un lambda generale? –