Programação funcional em Python

Aproveitando o poder de Lambdas e funções de ordem superior

Aprenda a escrever código conciso e poderoso em Python usando técnicas de programação funcional. Este tutorial aborda funções, expressões lambda e funções de ordem superior, como map, filter e reduce.

Programação
Autor
Afiliação
Data de Publicação

5 de fevereiro de 2024

Data de Modificação

29 de abril de 2025

Palavras-chave

Programação funcional Python, Funções lambda, map filter reduce, funções de ordem superior, Programação funcional em Python

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
double = lambda x: x * 2
print("Double of 5 is:", double(5))

# Usando map() com um lambda para duplicar cada elemento em uma lista
numbers = [1, 2, 3, 4, 5]
doubled = list(map(lambda x: x * 2, numbers))
print("Doubled list:", doubled)

# Usando filter() com um lambda para selecionar números pares
evens = list(filter(lambda x: x % 2 == 0, numbers))
print("Even numbers:", evens)

# Usando reduce() para calcular o produto de uma lista de números
from functools import reduce
product = reduce(lambda a, b: a * b, numbers)
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
numbers <- c(1, 2, 3, 4, 5)
doubled <- lapply(numbers, function(x) x * 2)
print("Doubled list:")
print(unlist(doubled))

# Usando Filter() com uma função anônima para selecionar números pares
evens <- Filter(function(x) x %% 2 == 0, numbers)
print("Even numbers:")
print(evens)

# Usar Reduce() para calcular o produto de números
product <- Reduce(function(a, b) a * b, numbers)
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

Boa programação e aproveite para explorar o poder da programação funcional em Python!

Explore mais artigos

Nota

Aqui estão mais artigos da mesma categoria para ajudá-lo a se aprofundar no tópico.

placeholder

placeholder
Nenhum item correspondente
De volta ao topo

Reuso

Citação

BibTeX
@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}
}
Por favor, cite este trabalho como:
Kassambara, Alboukadel. 2024. “Programação funcional em Python.” February 5, 2024. https://www.datanovia.com/pt/learn/programming/python/advanced/functional-programming.html.