Voglio avvolgere una funzione con argomenti specificati, qualcosa di simile functools.partial, ma non funziona come previsto:non è riuscito ad avvolgere funzione con lambda
source_codes = (0, 1, 2)
def callback(source, *args):
print 'callback from source: ', source
funcs = []
for source in source_codes:
funcs.append(lambda *args: callback(source, *args))
for i, func in enumerate(funcs):
print 'source expected: ', i
func()
print
l'output:
source expected: 0
callback from source: 2
source expected: 1
callback from source: 2
source expected: 2
callback from source: 2
Ma ... Quello che voglio è:
source expected: 0
callback from source: 0
source expected: 1
callback from source: 1
source expected: 2
callback from source: 2
so che funziona se uso functools.partial
, ma voglio sapere esimo e vero problema nel mio codice ... Il wrapper lambda usa una variabile globale source
?