Funções são Objetos em Python: Um Guia para Iniciantes

Ana Maria Gomes
5 minutos de leitura

Conteúdos do tutorial

Se você está começando a aprender Python, pode se surpreender ao descobrir que, em Python, funções são objetos. Isso significa que podemos manipulá-las de maneiras que talvez você não tenha imaginado. Neste tutorial, vamos explorar o que isso significa e como podemos usar essa característica poderosa da linguagem Python.

O que Significa “Funções são Objetos”?

Em Python, tudo é um objeto, incluindo funções. Isso significa que podemos atribuir funções a variáveis, passá-las como argumentos para outras funções, e até mesmo retorná-las de outras funções. Vamos ver alguns exemplos para entender melhor.

Atribuindo Funções a Variáveis

Podemos atribuir uma função a uma variável da mesma forma que atribuímos um número ou uma string. Veja o exemplo abaixo:

def diga_ola():
    print("Olá!")

# Atribuindo a função a uma variável
minha_funcao = diga_ola

# Chamando a função através da variável
minha_funcao()
Testar

Neste exemplo, a função diga_ola é atribuída à variável minha_funcao. Quando chamamos minha_funcao(), a função diga_ola é executada, imprimindo “Olá!”.

Passando Funções como Argumentos

Podemos passar funções como argumentos para outras funções. Isso é útil quando queremos que uma função execute outra função como parte de sua operação.

def diga_ola():
    print("Olá!")

def execute_funcao(func):
    func()

# Passando a função como argumento
execute_funcao(diga_ola)
Testar

Aqui, a função execute_funcao recebe uma função como argumento e a executa. Quando chamamos execute_funcao(diga_ola), a função diga_ola é executada.

Retornando Funções de Outras Funções

Também podemos retornar funções de outras funções. Isso nos permite criar funções que geram outras funções.

def saudacao_factory(saudacao):
    def diga_algo(nome):
        print(f"{saudacao}, {nome}!")
    return diga_algo

# Criando uma nova função
diga_ola = saudacao_factory("Olá")
diga_ola("Mundo")
Testar

Neste exemplo, a função saudacao_factory cria e retorna uma nova função diga_algo que imprime uma saudação personalizada. Quando chamamos diga_ola("Mundo"), a saída é “Olá, Mundo!”.

Decoradores: Adicionando Funcionalidade às Funções

Os decoradores são uma maneira poderosa de modificar o comportamento de funções em Python. Eles são funções que recebem outra função como argumento e retornam uma nova função com funcionalidade adicional.

Criando um Decorador Simples

Vamos criar um decorador que imprime uma mensagem antes e depois de chamar a função original.

def meu_decorador(func):
    def wrapper():
        print("Antes da função")
        func()
        print("Depois da função")
    return wrapper

@meu_decorador
def diga_ola():
    print("Olá!")

diga_ola()
Testar

Aqui, o decorador meu_decorador adiciona mensagens antes e depois da execução da função diga_ola. O símbolo @meu_decorador é uma maneira conveniente de aplicar o decorador à função.

Conclusão

Entender que funções são objetos em Python abre um mundo de possibilidades para escrever código mais flexível e reutilizável. Podemos atribuir funções a variáveis, passá-las como argumentos, retorná-las de outras funções e até mesmo usar decoradores para modificar seu comportamento.

Esperamos que este tutorial tenha ajudado você a entender melhor como manipular funções em Python. Continue praticando e explorando essas ideias para se tornar um programador Python ainda mais competente!

Inscreva-se gratuitamente e fique atualizado

Receba toda semana um resumo dos principais conteúdos da Asimov direto no seu e-mail. 100% livre de spam.

Áreas de interesse: