--- title: ASIX M3. [UF2]. Funcions lambda. tags: asix, programació, funcions, programació modular --- # ASIX1 M03: Programació bàsica [vincle a font en MarkDown](https://hackmd.io/@JdaXaviQ/SyqPYyLZc) --- # Funcions Lambda Una funció _lambda_ és segons la documentació oficial es un tipus d'escriptura simplificat una drecera per quan et fa mandra crear una funció. Veiem un exemple: ```python f = lambda a, b: a + b print(f(3, 6)) ``` 9 L'exemple anterior és equivalent a: ```python def suma(a, b): return a + b f = suma print(f(3,5)) ``` 8 Inclús podriem executarla a la mateixa línia de declaració: ```python (lambda a,b: a + b)(3, 9) ``` 12 Dos usos típics de les lambdes són: 1. Com a retorn d'una funció. 2. Com a paràmetre d'una funció que requereix d'una altra funció. ### Lambda com a retorn d'una funció. #### Això es va inventar per a fer explotar caps. Preneu-vos-ho amb calma, pot ser perillós!!! ```python def multiplicador(n): return lambda a: a * n tripletejador = multiplicador(3) doblejador = multiplicador(2) print(f"{tripletejador(8)=}") print(f"{doblejador(8)=}") ``` tripletejador(8)=24 doblejador(8)=16 ### Lambda com a paràmetre d'una funció. #### Altrament coneguda com __callback__ ```python def suma(sum1, sum2, visualitzador = lambda a: str(a)): return visualitzador(sum1 + sum2) print (suma(3, 5)) print (suma(3, 5, lambda a: '<p>\n\tresultat: <span id="resultat">' + str(a) + "</span>\n</p>")) print (suma(3, 5, lambda a: '{"resultat": ' + str(a) + '}')) def el_meu_visualitzador(nombre): resultat = "resultat: " + str(nombre) return resultat print (suma(3, 5, el_meu_visualitzador)) ``` 8 <p> resultat: <span id="resultat">8</span> </p> {"resultat": 8} resultat: 8 ```python ```