---
# System prepended metadata

title: 'ASIX M3. [UF2]. Funcions lambda.'
tags: [' programació modular', ' funcions', ' programació', asix]

---

---
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

```