O documento discute programação funcional em Python, apresentando expressões lambda, funções map, reduce e filter. Essas ferramentas permitem aplicar funções a sequências de dados de forma concisa, reduzindo código e aumentando velocidade em alguns casos, embora possam gerar códigos obscuros. Exemplos demonstram o uso dessas funções e geram listas de primos, Fibonacci e o fractal conjunto de Mandelbrot.
2. Python Funcional
Python possibilita, além dos paradigmas mais tradicionais, trabalhar com o
paradigma de programação funcional.
•Vantagens:
• Redução do código-fonte
• Maior velocidade
• Em alguns casos facilita implementações
• Desvantagens:
• Maior possibilidade de gerar códigos obscuros
• Não é uma paradigma muito difundido
A abordagem usada neste curso para programação funcional em
python não tem intenção de aprofundar no assunto, mas apenas mostrar
algumas ferramentas que a linguagem apresenta para seu
uso.
3. Expressões lambda
Expressões lambdas são funções que não precisam ser nomeadas,
funções anônimas.
Sintaxe:
lambda arg1,arg2,arg3...,argN: expressão
As expressões lambda são úteis quando usadas com as funções
filter,map,reduce do python.
5. map
A função map é usada quando precisa-se aplicar uma determinada
função em todos os itens de uma ou mais sequência.
map(function, sequence[, sequence, ...]) -> list
Exemplo:
6. map completo
A função map aceita mais uma sequência. Veja os exemplos:
Note que como pow recebe no mínimo dois parâmetros quando temos
passar o map com pow em uma lista deu erro.
7. reduce
A reduce aplica uma função sobre uma sequência e vai acumulando o
valor de retorno da função a partir de um valor inicial.
Sintaxe:
reduce(function, sequence[, initial]) -> value
Exemplos:
8. filter
O filter opera a função passa sobre a lista, gerando uma outras lista
quando o retorno da função for verdadeiro.
Sintaxe:
filter(function or None, sequence) -> list, tuple, or string
Exemplos:
9. zip
A zip retorna uma lista de tuplas associando para cada item das
sequências passadas como parâmetro.
Sintaxe:
zip(seq1 [, seq2 [...]]) -> [(seq1[0], seq2[0] ...), (...)]
Exemplos:
Note que no primeiro exemplo a quantidade de tuplas na lista de retorno
é a quantidade de elementos da menor sequência.
10. Exemplos
Alguns exemplos do uso das ferramentas funcionais do python.
• Gerar lista dos primos entre 2 e 50
• Geras os 10 primeiros valores da sequência de fibonnaci