0
Promoção de Volta das Aulas ! Cursos com 25% OFF no menu "Cursos"
agosto 21, 2025
0
César Fontanella

Funções como Objetos de Primeira Classe em Python: Guia para Iniciantes

Em Python, funções são objetos de primeira classe. Isso significa que elas podem ser tratadas como qualquer outro dado: atribuídas a variáveis, passadas como argumentos para outras funções e até mesmo retornadas como resultado.
Esse conceito é poderoso porque abre as portas para técnicas avançadas de programação, como funções de ordem superior e decoradores.

Se você está começando, entender esse recurso vai te ajudar a escrever códigos mais reutilizáveis, flexíveis e “pythônicos”.


O que significa “Objeto de Primeira Classe”?

Um objeto de primeira classe é algo que pode:

  1. Ser atribuído a uma variável.
  2. Ser armazenado em estruturas de dados (listas, dicionários, etc.).
  3. Ser passado como argumento para funções.
  4. Ser retornado como resultado de funções.

Em Python, funções possuem todas essas características.


Atribuindo Funções a Variáveis

Você pode guardar uma função dentro de uma variável e chamá-la normalmente:

def saudacao(nome):
    return f"Olá, {nome}!"

cumprimento = saudacao  # atribui a função a uma variável
print(cumprimento("Maria"))  # Olá, Maria!

Funções Dentro de Estruturas de Dados

Funções podem ser armazenadas em listas, dicionários e usadas dinamicamente.

def soma(a, b): return a + b
def subtrai(a, b): return a - b

operacoes = {
    "soma": soma,
    "subtrai": subtrai
}

print(operacoes["soma"](5, 3))      # 8
print(operacoes["subtrai"](5, 3))   # 2

Passando Funções como Argumentos

Funções podem receber outras funções como parâmetros. Isso é útil para abstrações e customizações.

def aplicar_operacao(funcao, x, y):
    return funcao(x, y)

print(aplicar_operacao(soma, 4, 2))      # 6
print(aplicar_operacao(subtrai, 4, 2))  # 2

Funções que Retornam Funções

Em Python, uma função pode criar e retornar outra função.

def criar_multiplicador(fator):
    def multiplicar(numero):
        return numero * fator
    return multiplicar

dobro = criar_multiplicador(2)
triplo = criar_multiplicador(3)

print(dobro(5))   # 10
print(triplo(5))  # 15

Esse recurso é muito usado em closures, que mantêm um estado interno.


Funções de Ordem Superior

Funções que recebem ou retornam outras funções são chamadas de funções de ordem superior.
Python possui várias delas nativamente:

numeros = [1, 2, 3, 4, 5]

# aplica uma função a cada item da lista
quadrados = list(map(lambda x: x**2, numeros))

# filtra apenas os pares
pares = list(filter(lambda x: x % 2 == 0, numeros))

print(quadrados)  # [1, 4, 9, 16, 25]
print(pares)      # [2, 4]

Decoradores: uma aplicação prática

Um decorador é uma função que recebe outra função como argumento e retorna uma nova função com comportamento modificado.

def log(funcao):
    def wrapper(*args, **kwargs):
        print(f"Executando {funcao.__name__}...")
        return funcao(*args, **kwargs)
    return wrapper

@log
def soma(a, b):
    return a + b

print(soma(2, 3))

Saída:

Executando soma...
5


Conteúdo adaptado do capítulo “Funções como Objetos de Primeira Classe” do livro Python Fluente de Luciano Ramalho.