Funktionsaufruf aus String-Name in Python
-
Verwenden Sie
getattr()
, um eine Funktion in eine Variable in Python zuzuweisen -
Verwendung von
locals()
undglobals()
zum Aufrufen einer Funktion aus einer Zeichenkette 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.
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.
LinkedInVerwandter Artikel - Python Function
- Beenden Sie eine Funktion in Python
- Optionale Argumente in Python
- Argumente in der Funktion main() in Python
- Eingebaute Identitätsfunktion in Python
- Erstklassige Funktionen in Python
- Funktionssignatur erhalten
Verwandter Artikel - Python String
- Entfernen Kommas aus String in Python
- Wie man prüft, ob eine Zeichenkette auf pythonische Weise leer ist
- Konvertieren einer Zeichenkette in einen Variablennamen in Python
- Wie man Leerzeichen in einem String in Python entfernt
- Wie man in Python Zahlen aus einer Zeichenkette extrahiert
- Wie man in Python String in datetime konvertiert