ho trovato un po 'la funzione abbastanza intelligente che prende due funzioni, si applica uno sopra l'altro dato un argomento x
:Perché questo lambda richiede * arg, che differenza fa?
def compose(f,g):
return lambda *x: f(g(*x))
Ora il mio problema è con *x
, come io non lo vedo realmente facendo qualsiasi cosa qui Perché non potrebbe essere semplice x
(senza l'asterisco)?
Qui sono le mie prove:
>>> def compose(f,g):
... return lambda *x: f(g(*x))
...
>>> this = lambda i: i+1
>>> that = lambda b: b+1
>>> compose(this,that)(2)
4
>>> def compose(f,g):
... return lambda x: f(g(x))
...
>>> compose(this,that)(2)
4
>>> def compose(f,g):
... return lambda *x: f(g(*x))
...
>>> compose(this,that)(2,2)
TypeError: <lambda>() takes exactly 1 argument (2 given)
@jonrsharpe mentre spiega '*'/'**' - Non penso che spieghi il contesto di questa domanda –