Funktionsaufruf aus String-Name in Python

Rayven Esplanada 21 Dezember 2022
  1. Verwenden Sie getattr(), um eine Funktion in eine Variable in Python zuzuweisen
  2. Verwendung von locals() und globals() zum Aufrufen einer Funktion aus einer Zeichenkette in Python
Funktionsaufruf aus String-Name in Python

In diesem Tutorial wird gezeigt, wie man in Python eine Funktion über ihren Namen im String-Format aufruft.

Der Anwendungsfall für dieses Problem ist, eine Funktion aus einem Modul oder einer Klasse in eine Variable für eine beliebige Verwendung zuzuweisen.

Verwenden Sie getattr(), um eine Funktion in eine Variable in Python zuzuweisen

Die Funktion getattr() gibt den Wert eines Attributs aus einem Objekt oder Modul zurück. Diese Funktion hat zwei erforderliche Argumente, das erste Argument ist der Name des Objekts oder Moduls und das zweite ist ein String-Wert, der den Namen des Attributs enthält.

Das betreffende Attribut kann in Form einer Variablen, einer Funktion oder einer Unterklasse vorliegen.

Nehmen wir an, wir haben eine Klasse namens “User” mit den angegebenen Attributen:

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

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

Nun wollen wir die Funktion des Attributs doSomething() in einer Methode speichern und diese aufrufen. Dazu verwenden wir die Funktion getattr().

from user import User as user

doSomething = getattr(user, "doSomething")

doSomething(user)

Ausgabe:

John did something.

Nun wird die Funktion user.doSomething() in die Variable doSomething verpackt. Auf diese Weise muss das Objekt user nicht angegeben werden, um die Funktion aufzurufen.

Verwendung von locals() und globals() zum Aufrufen einer Funktion aus einer Zeichenkette in Python

Eine weitere Möglichkeit, eine Funktion aus einer Zeichenkette aufzurufen, ist die Verwendung der eingebauten Funktionen locals() und globals. Diese beiden Funktionen geben ein Python-Dictionary zurück, das die aktuelle Symboltabelle des angegebenen Quellcodes darstellt.

Der Unterschied zwischen den beiden Funktionen ist der Namensraum. Wie die Namen andeuten, gibt locals() ein Dictionary mit lokalen Variablen und globals() ein Dictionary mit lokalen Variablen zurück. Die Funktionsnamen werden ebenfalls im Format der Zeichenkette zurückgegeben.

Lassen Sie uns diese Methoden in einem Beispiel anwenden. Deklarieren Sie 2 Zufallsfunktionen und rufen Sie diese mit den beiden eingebauten Funktionen auf.

def myFunc():
    print("This is a function.")


def myFunc2():
    print("This is another function.")


locals()["myFunc"]()
globals()["myFunc2"]()

Ausgabe:

This is a function.
This is another function.

Zusammenfassend lässt sich sagen, dass zum Aufrufen einer Funktion aus einer Zeichenkette die Funktionen getattr(), locals() und globals() verwendet werden. Für getattr() müssen Sie wissen, in welchem Objekt oder Modul sich die Funktion befindet, während locals() und globals() die Funktion in ihrem eigenen Bereich lokalisieren.

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

Verwandter Artikel - Python Function

Verwandter Artikel - Python String