Como Chamar uma Função Usando uma String com o Nome da Função em Python

Ana Maria Gomes
4 minutos de leitura

Conteúdos do tutorial

Python é uma linguagem versátil que permite realizar muitas operações dinâmicas, incluindo chamar uma função usando uma string que contém o nome da função. Isso pode ser particularmente útil em cenários onde a função a ser executada é determinada em tempo de execução. Neste tutorial, vamos explorar como alcançar isso usando diferentes métodos.

Usando getattr para Chamar uma Função

Uma das maneiras mais diretas de chamar uma função usando uma string é utilizando a função getattr. A função getattr é incorporada ao Python e permite que você recupere um atributo de um objeto pelo nome. Veja como você pode usá-la:

import foo

# Suponha que foo é um módulo com uma função chamada bar
nome_func = "bar"
funcao_para_chamar = getattr(foo, nome_func)
resultado = funcao_para_chamar()

Neste exemplo, getattr é usado para recuperar a função bar do módulo foo usando a string 'bar'. Uma vez recuperada, a função pode ser chamada como funcao_para_chamar().

Usando locals() e globals() para Chamar uma Função

Python fornece duas funções, locals() e globals(), que retornam dicionários representando as tabelas de símbolos locais e globais, respectivamente. Estas podem ser usadas para chamar uma função pelo nome:

# Usando locals()
locals()["minhafuncao"]()

# Usando globals()
globals()["minhafuncao"]()

Se minhafuncao é uma função definida no escopo local ou global, você pode usar a função correspondente para recuperá-la e chamá-la.

Importando Módulos Dinamicamente e Chamando Funções

Às vezes, você pode precisar importar um módulo dinamicamente e chamar uma função dentro dele. Você pode fazer isso usando a função __import__ juntamente com getattr:

# Importar dinamicamente o módulo chamado 'foo'
modulo = __import__('foo')

# Recuperar a função chamada 'bar' do módulo importado
func = getattr(modulo, 'bar')

# Chamar a função
func()

Este método é particularmente útil quando tanto o nome do módulo quanto o da função são determinados em tempo de execução.

Resumo

Neste post, cobrimos como chamar uma função usando uma string com o nome da função em Python. Examinamos o uso de getattr para recuperar uma função de um módulo, usando locals() e globals() para chamar uma função pelo nome dentro dos escopos local e global, e importando dinamicamente um módulo para chamar uma função dentro dele. Essas técnicas podem ser incrivelmente úteis ao escrever código Python flexível e dinâmico. Lembre-se de usar esses métodos com responsabilidade, pois eles podem tornar seu código mais difícil de ler e manter se usados excessivamente.

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:
Conteúdos do tutorial