Funções lambda em [[Linguagem de programação Python|Python]] são funções anônimas, pequenas e de uso único. Elas são definidas usando a palavra-chave `lambda` e são frequentemente usadas em situações onde uma função simples é necessária por um curto período de tempo.
# Sintaxe
A sintaxe de uma função lambda é:
```python
lambda argumentos: expressão
```
* `lambda`: Palavra-chave para definir uma função lambda.
* `argumentos`: Lista de argumentos (separados por vírgulas, se houver mais de um).
* `expressão`: Uma única expressão que é avaliada e retornada pela função.
# Exemplos
## Função lambda simples
```python
# Eleva um número ao quadrado
square = lambda x: x * x
print(square(5)) # Saída: 25
````
## Função lambda com múltiplos argumentos
```python
# Soma dois números
soma = lambda x, y: x + y
print(soma(3, 4)) # Saída: 7
```
## Função lambda sem argumentos
```python
# Retorna uma string
saudacao = lambda: "Olá!"
print(saudacao()) # Saída: Olá!
```
## Comparação com função `def`
A função lambda acima é equivalente a:
```python
def saudacao_def():
return "Olá!"
```
# Uso com Funções de Ordem Superior
Funções lambda são frequentemente usadas como argumentos para [Funções de Ordem Superior em Python](app://obsidian.md/Fun%C3%A7%C3%B5es%20de%20Ordem%20Superior%20em%20Python), como `map`, `filter` e `sort`.
## Exemplo com `sort`
```python
people = [
{"name": "Harry", "house": "Gryffindor"},
{"name": "Cho", "house": "Ravenclaw"},
{"name": "Draco", "house": "Slytherin"}
]
# Ordena a lista de pessoas pelo nome
people.sort(key=lambda person: person["name"])
print(people)
# Saída:
# [{'name': 'Cho', 'house': 'Ravenclaw'}, {'name': 'Draco', 'house': 'Slytherin'}, {'name': 'Harry', 'house': 'Gryffindor'}]
```
Neste exemplo, a função `sort` usa uma função lambda para definir a chave de ordenação. A função lambda recebe um dicionário `person` como entrada e retorna o valor da chave `"name"`. Isso faz com que a lista seja ordenada alfabeticamente pelo nome das pessoas.
## Ordenando por casa
Para ordenar por casa, basta mudar a função lambda:
```python
people.sort(key=lambda person: person["house"])
print(people)
#Saída:
#[{'name': 'Harry', 'house': 'Gryffindor'}, {'name': 'Cho', 'house': 'Ravenclaw'}, {'name': 'Draco', 'house': 'Slytherin'}]
```
# Vantagens e Desvantagens
- **Vantagens:** Concisão, conveniência para funções simples e de uso único.
- **Desvantagens:** Legibilidade limitada para lógicas complexas, falta de nome (dificulta o debugging).
:: **Referência:** :: [Site W3schools sobre funções lambda em Python](https://www.w3schools.com/python/python_lambda.asp)