2010/8/26 Txema Vicente <tx...@nabla.net>: > Buenas. > > Tengo un problemilla con las funciones lambda, quiero generar un monton de > ellas desde un bucle, pero me he topado con que si hago esto: > > def multiplica(n,m): return n*m > > funciones=[] > > # Primera forma > funciones.append(lambda x: multiplica(1 ,x)) > funciones.append(lambda x: multiplica(2 ,x)) > funciones.append(lambda x: multiplica(3 ,x)) > > # Segunda forma > a=4 > funciones.append(lambda x: multiplica(a ,x)) > a=5 > funciones.append(lambda x: multiplica(a ,x)) > a=6 > funciones.append(lambda x: multiplica(a ,x))
Es cosa del scope, que seguro alguien más lo puede explicar en detalle. Similar a functools.partial() pero te sirve para hacer más operaciones con x: def multiplica_partial(x): # do stuff def inner(a): return multiplica(a, x) return inner luego: a = 1 funciones.append(multiplica_partial(a)) a = 2 funciones.append(multiplica_partial(a)) Rolando Espinoza La fuente www.insophia.com _______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/