Chamar uma função a partir do nome da string em Python
-
Utilize
getattr()
para Atribuir uma função a uma variável em Python -
Utilize
locals()
eglobals()
para chamar uma função a partir de uma String em Python
Este tutorial irá introduzir como chamar uma função usando o seu nome em formato de string em Python.
O caso de uso para este problema é atribuir uma função de um módulo ou uma classe a uma variável para qualquer uso que possa ter.
Utilize getattr()
para Atribuir uma função a uma variável em Python
A função getattr()
devolve um valor de um atributo de um objecto ou módulo. Esta função tem dois argumentos obrigatórios, o primeiro argumento é o nome do objecto ou módulo, e o segundo é um valor de string que contém o nome do atributo.
O atributo em questão pode ter a forma de uma variável, uma função, ou uma subclasse.
Digamos que temos uma classe chamada User
com os atributos dados:
# Filename: user.py
class User:
name = "John"
age = 33
def doSomething():
print(name + " did something.")
Agora, queremos armazenar a função de atributo doSomething()
num método e chamá-lo de doSomething()
. Para tal, vamos utilizar a função getattr()
.
from user import User as user
doSomething = getattr(user, "doSomething")
doSomething(user)
Resultado:
John did something.
Agora, a função user.doSomething()
está envolvida dentro da variável doSomething
. Desta forma, o objecto user
não tem de ser especificado para chamar a função.
Utilize locals()
e globals()
para chamar uma função a partir de uma String em Python
Outra forma de chamar uma função a partir de uma string é utilizando as funções embutidas locals()
e globals
. Estas duas funções devolvem um Python dicionário que representa a tabela de símbolos actual do código fonte dado.
A diferença entre as duas funções é o namespace. Como os nomes indicam, locals()
retorna um dicionário incluindo variáveis locais e globals()
retorna um dicionário incluindo variáveis locais. Os nomes das funções são também devolvidos no formato da string.
Vamos colocar estes métodos num exemplo. Declare 2 funções aleatórias e chamemos-lhe utilizando ambas as funções incorporadas.
def myFunc():
print("This is a function.")
def myFunc2():
print("This is another function.")
locals()["myFunc"]()
globals()["myFunc2"]()
Resultado:
This is a function.
This is another function.
Em resumo, para chamar uma função a partir de uma string, as funções getattr()
, locals()
, e globals()
são utilizadas. A função getattr()
irá exigir que saiba em que objecto ou módulo a função está localizada, enquanto que as funções locals()
e globals()
irão localizar a função dentro do seu próprio âmbito.
Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.
LinkedInArtigo relacionado - Python Function
- Argumentos opcionais em Python
- Sair de uma função em Python
- Passagem por referência em Python
- Sobrecarga de função em Python
- A função de retorno de chamada em Python
- Funções aninhadas em Python