Introdução
A programação funcional é um paradigma que trata as funções como cidadãos de primeira classe, o que significa que as funções podem ser atribuídas a variáveis, passadas como argumentos e retornadas de outras funções. Em Python, você pode escrever código conciso e expressivo usando expressões lambda e funções de ordem superior, como map
, filter
e reduce
. Este tutorial explicará esses conceitos e demonstrará como eles podem ser usados para escrever código mais elegante e eficiente.
Conceitos básicos
Funções de primeira classe
Em Python, as funções são objetos de primeira classe. Isso significa que você pode: - Atribuir funções a variáveis. - Passe funções como argumentos para outras funções. - Retornando funções de outras funções.
Funções lambda
Funções lambda são funções anônimas definidas com a palavra-chave lambda
. Eles são normalmente usados para funções curtas e descartáveis que não são complexas o suficiente para justificar uma definição completa da função.
Funções de ordem superior
Funções de ordem superior são funções que recebem outras funções como argumentos ou as retornam como resultados. Python fornece várias funções de ordem superior integradas:
- map(): Aplica uma função a cada item de um iterável.
- filter(): Filtra itens de um iterável com base em uma condição.
- reduce(): Aplica uma função cumulativamente aos itens de um iterável (disponível no módulo functools
).
Exemplos: Python vs. R
Abaixo, você verá exemplos que demonstram conceitos de programação funcional em Python, com uma comparação com R para contextualização.
# Python: Função Lambda e funções de ordem superior
# Usando um lambda para duplicar um número
= lambda x: x * 2
double print("Double of 5 is:", double(5))
# Usando map() com um lambda para duplicar cada elemento em uma lista
= [1, 2, 3, 4, 5]
numbers = list(map(lambda x: x * 2, numbers))
doubled print("Doubled list:", doubled)
# Usando filter() com um lambda para selecionar números pares
= list(filter(lambda x: x % 2 == 0, numbers))
evens print("Even numbers:", evens)
# Usando reduce() para calcular o produto de uma lista de números
from functools import reduce
= reduce(lambda a, b: a * b, numbers)
product print("Product of numbers:", product)
# R: Funções anônimas e funções de ordem superior
# Usando uma função anônima com lapply para duplicar números
<- c(1, 2, 3, 4, 5)
numbers <- lapply(numbers, function(x) x * 2)
doubled print("Doubled list:")
print(unlist(doubled))
# Usando Filter() com uma função anônima para selecionar números pares
<- Filter(function(x) x %% 2 == 0, numbers)
evens print("Even numbers:")
print(evens)
# Usar Reduce() para calcular o produto de números
<- Reduce(function(a, b) a * b, numbers)
product print("Product of numbers:")
print(product)
Conclusão
A programação funcional em Python permite escrever código conciso, expressivo e eficiente. Ao aproveitar funções de primeira classe, expressões lambda e funções de ordem superior, como map
, filter
e reduce
, você pode realizar operações complexas de maneira clara e compacta. Experimente esses conceitos para ver como eles podem simplificar suas tarefas de codificação e melhorar a legibilidade do código.
Leitura adicional
- Python para iniciantes: seu primeiro script
- Sintaxe e variáveis em Python
- Fluxo de controle e loops em Python
Boa programação e aproveite para explorar o poder da programação funcional em Python!
Explore mais artigos
Aqui estão mais artigos da mesma categoria para ajudá-lo a se aprofundar no tópico.
Reuso
Citação
@online{kassambara2024,
author = {Kassambara, Alboukadel},
title = {Programação funcional em Python},
date = {2024-02-05},
url = {https://www.datanovia.com/pt/learn/programming/python/advanced/functional-programming.html},
langid = {pt}
}