Programação funcional na prática

Conceitos de Paradigmas de Programação

Eleanor Thomas

Senior Data Analytics Engineer

Programação funcional na prática

  • Três exemplos de funções puras
  • Diferença-chave entre função pura e função Python geral: sem efeitos colaterais
  • Funções puras podem chamar outras puras e continuam puras

Quadro de desenho

Conceitos de Paradigmas de Programação

Exemplo 1 - Escrevendo uma função pura

def square_list(input_list):
    new_list = []

for item in input_list:
new_item = item ** 2
new_list.append(new_item)
return new_list
  • Primeiro cria uma nova lista vazia
  • Percorre cada item da lista de entrada
    • Eleva ao quadrado
    • Adiciona à nova lista
  • Retorna a nova lista
Conceitos de Paradigmas de Programação

Exemplo 2 - Corrigindo uma função “impura”

sample_mean = 10
scale_factor = 2

def scale_list(input_list):
    new_list = []
    for item in input_list:
        new_item = (item - sample_mean) / scale_factor
        new_list.append(new_item)
    return new_list
  • Depende de variáveis fora do corpo da função
  • Não é uma função pura
Conceitos de Paradigmas de Programação

Exemplo 2 - Função “impura” corrigida

def scale_list(input_list, sample_mean, scale_factor):
    new_list = []
    for item in input_list:
        new_item = (item - sample_mean) / scale_factor
        new_list.append(new_item)
    return new_list
  • As variáveis sample_mean e scale_factor viraram parâmetros de entrada da função
  • A função agora é “pura”
Conceitos de Paradigmas de Programação

Exemplo 3 - Combinando funções puras

def scale_value(value, sample_mean, scale_factor):
    scaled_value = (value - sample_mean) / scale_factor
    return scaled_value

def scale_list(input_list, sample_mean, scale_factor):
    new_list = []
    for item in input_list:
        new_item = scale_value(item, sample_mean, scale_factor)
        new_list.append(new_item)
    return new_list
Conceitos de Paradigmas de Programação

Vamos praticar!

Conceitos de Paradigmas de Programação

Preparing Video For Download...