[Python-es] Duda con los parametros de funciones lambda.

Rolando Espinoza La Fuente darkrho en gmail.com
Vie Ago 27 01:43:08 CEST 2010


2010/8/26 Txema Vicente <txema en 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


Más información sobre la lista de distribución Python-es