Llamar una función desde el nombre de la cadena en Python

Rayven Esplanada 30 enero 2023
  1. Utilice getattr() para asignar una función a una variable en Python
  2. Usando locals() y globals() para llamar a una función desde una cadena en Python
Llamar una función desde el nombre de la cadena en Python

Este tutorial introducirá cómo llamar una función usando su nombre en formato de cadena en Python.

El caso de uso de este problema es asignar una función de un módulo o una clase a una variable para cualquier uso que pueda tener.

Utilice getattr() para asignar una función a una variable en Python

La función getattr() devuelve un valor de un atributo de un objeto o módulo. Esta función tiene dos argumentos necesarios, el primer argumento es el nombre del objeto o módulo, y el segundo es un valor de cadena que contiene el nombre del atributo.

El atributo en cuestión puede ser en forma de una variable, una función o una subclase.

Digamos que tenemos una clase llamada User con los atributos dados:

# Filename: user.py
class User:
    name = "John"
    age = 33

    def doSomething():
        print(name + " did something.")

Ahora, queremos almacenar la función de atributo doSomething() en un método y llamarlo. Para hacer esto, usaremos la función getattr().

from user import User as user

doSomething = getattr(user, "doSomething")

doSomething(user)

Resultado:

John did something.

Ahora, la función user.doSomething() está envuelta dentro de la variable doSomething. De esta forma, el objeto user no tiene que ser especificado para llamar a la función.

Usando locals() y globals() para llamar a una función desde una cadena en Python

Otra forma de llamar a una función desde una cadena es usando las funciones incorporadas locals() y globals. Estas dos funciones devuelven un Diccionario Python que representa la tabla de símbolos actual del código fuente dado.

La diferencia entre las dos funciones es el espacio de nombres. Como los nombres indican, locals() devuelve un diccionario que incluye las variables locales y globals() devuelve un diccionario que incluye las variables locales. Los nombres de las funciones también se devuelven en el formato de la cadena.

Pongamos estos métodos en un ejemplo. Declare 2 funciones aleatorias y llámelas usando ambas funciones 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.

En resumen, para llamar a una función desde una cadena, se usan las funciones getattr(), locals(), y globals(). getattr() requerirá que usted sepa en qué objeto o módulo se encuentra la función, mientras que locals() y globals() localizarán la función dentro de su propio ámbito.

Rayven Esplanada avatar Rayven Esplanada avatar

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.

LinkedIn

Artículo relacionado - Python Function

Artículo relacionado - Python String