Os fundamentos da Programação Funcional em Python #1

Book

 

A programação funcional tem o poder de tornar nossos códigos mais simples além de nos ajudar a reduzir seus efeitos colaterais. Este artigo terá como foco introduzir os principais conceitos da programação funcional com Python.

 

Por que Python?

A escolha do Python para abordar esse tópico é óbvia, sua sintaxe é simples, de fácil entendimento e menos complexa para iniciantes do que outras linguagens puramente funcionais como Haskell, além disso é uma excelente ferramenta pra introduzir um novo conhecimento de forma simples, clara e objetiva.

 

Contextualizando a Programação Funcional

Para começo de conversa precisamos contextualizar algumas coisas antes de prosseguirmos de fato para a prática, uma dessas coisas são os paradigmas, algo que iremos abordar em todo artigo.

Um paradigma de programação é uma forma de classificar linguagens com base em suas funcionalidades e estilo de código, tais funcionalidades refletem diretamente em como o código será estruturado no desenvolvimento de programas.

A Programação Funcional (PF) é um paradigma, assim como a Programação Orientada a Objetos (POO) ou a Programação Estruturada. O paradigma funcional é declarativo, ou seja, refere-se ao fato de usar funções e/ou expressões ao invés de ditar um passo a passo para a resolução do problema.

 

Imutabilidade, a alma do paradigma funcional

Nesse paradigma de programação tratamos apenas de funções matemáticas, evitando, assim, a alteração de estado e mutabilidade de dados. Na programação funcional um número sempre será ele mesmo, independente de onde, como ou quando ele será usado no código. Um fato da imutabilidade é que, em uma expressão matemática, dado um valor x teremos sempre o mesmo retorno da função. Por exemplo: se temos a expressão, f(x) = x + 1, sendo x = 2, o resultado dessa função sempre será 3, independente de quantas vezes o x for passado. O número passado para x não muda o seu valor, ele continua imutável, o que define o conceito da imutabilidade das funções.

 

Funções puras

Os códigos escritos no paradigma funcional seguem uma regra: as funções são projetadas para não terem efeitos colaterais. É algo que complementa o conceito de imutabilidade, ou seja, retornam sempre o mesmos valores para os mesmos parâmetros e não geram mudanças ou alterações em outras partes do código, essas funções são chamadas de puras.

 

Funções puras e impuras na prática

O código abaixo possui uma função impura por conta de um efeito colateral que faz com que, quando é passada uma lista para a função, ela remove o item, mas altera a lista original, assim, o argumento que é passado é modificado diretamente pela função. O método pop é o modo não funcional para obter tal resultado.

Agora um exemplo de uma função pura, da qual não se usa o método anterior:

A função acima também recebe uma lista como parâmetro e a retorna sem o último elemento e sem modificar a lista original.

Então como funciona o retorno dessa função? É retornada uma cópia da lista que contém as modificações feitas pela função, neste caso, a remoção do último item e com isso a lista permanece em seu estado original.

 

Conclusão

Este artigo foi uma introdução sobre a Programação Funcional em Python e suas principais características, na próxima postagem aprofundaremos em alguns outros conceitos fundamentais sobre o paradigma.

 

Referências

An Introduction to Functional Programming with Python

Functional Programming in Python

Higher-Order Functions


Obrigado pela leitura!