Programação Python
A programação funcional é um paradigma que se baseia inteiramente no uso de funções, ou seja, você pensa em programação funcional como simplesmente avaliações de funções, onde uma função pode ser complementada com outra(s) função(ões).
Mas qual a vantagem disso?
Bom, geralmente linguagens que implementam o paradigma funcional possuem algumas funções/recursos especialmente para esse paradigma, que visa tornar os programas mais ágeis, curtos, concisos, e menos suscetíveis a erros de estruturação.
Existem linguagens puramente funcionais (como é o caso de Lisp, que tem seu uso voltado 95% para inteligência artificial) e linguagens multiparadigmas, que é o caso de Python (onde você pode programar no paradigma procedural, orientado a objetos, funcional...).
Vamos então ver as estruturas que nos permitem trabalhar funcionalmente com Python:
sum
A mais básica. Ela recebe uma lista e devolve a soma e todos os seus valores
sum( range(11) ) # somando todos os números até 10
Resultado seria 55.
lambda
Funções lambda são funções anônimas, ou seja, não são reutilizáveis (na verdade podem ser sim, mas não foram feitas pra isso e você já vai entender o por que em alguns "episódios").
Daí você se pergunta:
"Qual a utilidade de uma função se ela não pode ser reutilizada?"
Daí eu te falo, tenta imaginar alguma relação entre lambdas e processamento de listas (sacô sacô?).
Para criar uma lambda fazemos assim:
lambda :
Onde é a lista de argumentos que serão passados para a função (dificilmente você precisará usar mais do que 1) e é uma expressão avaliando os argumentos e retornando seu valor.
Você pode atribuir uma lambda a uma variável e então reutilizá-la (esse pode ser um jeito curto de escrever funções curtas, mas o objetivo de lambda não é esse).
f = lambda x: x*2 f(2) # retorna 4
Agora sim, no próximo parágrafo vamos ver a real utilidade de lambdas...
map
Map é uma