Python ‐ Functional Programming 1 - cunhapaulo/ReferenceCard GitHub Wiki

1. Funções de Alta Ordem (Higher-Order Functions)

Funções que recebem outras funções como argumento ou retornam funções.

Exemplo:

def aplicar_funcao(f, valor):
    return f(valor)

def quadrado(x):
    return x ** 2

resultado = aplicar_funcao(quadrado, 5)
print(resultado)  # Saída: 25

2. Funções Anônimas (Lambda)

Funções curtas e sem nome, úteis para operações rápidas.

Exemplo:

dobro = lambda x: x * 2
print(dobro(4))  # Saída: 8

3. Mapeamento de Funções (map)

Aplica uma função a todos os elementos de um iterável.

Exemplo:

numeros = [1, 2, 3, 4]
quadrados = list(map(lambda x: x ** 2, numeros))
print(quadrados)  # Saída: [1, 4, 9, 16]

4. Filtragem de Dados (filter)

Filtra elementos de um iterável com base em uma condição.

Exemplo:

numeros = [1, 2, 3, 4, 5, 6]
pares = list(filter(lambda x: x % 2 == 0, numeros))
print(pares)  # Saída: [2, 4, 6]

5. Redução de Valores (reduce)

Reduz um iterável a um único valor aplicando uma função cumulativa.

Exemplo:

from functools import reduce

numeros = [1, 2, 3, 4, 5]
soma = reduce(lambda x, y: x + y, numeros)
print(soma)  # Saída: 15

6. Compreensão de Listas (List Comprehension)

Forma concisa de criar listas aplicando funções e filtros.

Exemplo:

quadrados = [x ** 2 for x in range(5)]
print(quadrados)  # Saída: [0, 1, 4, 9, 16]

7. Imutabilidade com Tuplas

Manter os dados imutáveis é um princípio importante da programação funcional.

Exemplo:

tupla = (1, 2, 3)
# tupla[0] = 10  # Isso geraria um erro, pois tuplas são imutáveis
print(tupla)  # Saída: (1, 2, 3)

8. Funções Recursivas

Funções que chamam a si mesmas, útil para resolver problemas indutivos.

Exemplo:

def fatorial(n):
    return 1 if n == 0 else n * fatorial(n - 1)

print(fatorial(5))  # Saída: 120

9. Funções Puras

Funções que sempre retornam o mesmo resultado para os mesmos inputs e não têm efeitos colaterais.

Exemplo:

def soma(a, b):
    return a + b  # Não altera variáveis externas, logo é pura

print(soma(3, 4))  # Saída: 7

Essas são algumas das principais funcionalidades da programação funcional em Python. Esse paradigma ajuda a tornar o código mais conciso, modular e fácil de testar. 🚀